在C语言中,gets和scanf用来记录字符串的输入,而getch和getchar用来接收字符输入,东西多了就是记不住,免得每次都要去网上翻翻,不如在自己还能记得住的时候做个笔记。

    下面只简单记录,详细的可以去网上找:

    scanf:它遇到空格、回车和Tab键都会认为输入结束,所有它不能接收空格。

    而gets则只认为回车符才是输入结束。

    相同的地方是:在字符串接受结束后都自动加'\0'。

 

   
   
   
   
  1. #include  
  2.  
  3. main() 
  4.  
  5.  
  6. char ch1[10],ch2[10],c1,c2; 
  7.  
  8. scanf("%s",ch1); 
  9.  
  10. c1=getchar(); 
  11.  
  12. gets(ch2); 
  13.  
  14. c2=getchar(); 
  15.  

依次键入asdfg回车,asdfg回车,则ch1="asdfg\0",c1='\n',ch2="asdfg\0",c2需输入。

scanf :当遇到回车,空格和tab键会自动在字符串后面添加'\0',但是回车,空格和tab键仍会留在输入的缓冲区中。下次如果调用会直接先拿缓冲区中的数据。

其实也可以清空,编译器提供了清空缓冲区函数,fflush(stdin);

gets:可接受回车键之前输入的所有字符,并用'\n'替代 '\0'.回车键不会留在输入缓冲区中

     其实就是gets函数在读取字符串时将删除结尾的换行符。

II: 

    gets可以用来读取字符串输入,scanf可以读取任何类型的。

 

III:

    getchar:它有一个int型的返回值.当程序调用getchar时.程序就等着用户按键.用户输入的字符被存放在键盘缓冲区中.直到用户按回车为止(回车字符也放在缓冲区中).

    getch:只要用户按一个键,getch就立刻返回, getch返回值是用户输入的ASCII码,出错返回-1.输入的字符不会回显在屏幕上.getch函数常用于程序调试中,在调试时,在关键位置显示有关的结果以待查看,然后用getch函数暂停程序运行,当按任意键后程序继续运行.