相信大家或多或少都对这几个输入区分的不是那么的清楚,今天就用这篇文章做个全面的说明。
废话不多说,直接上总结
snanf
输入字符串%s的时候,不可以 “abc def” 这样输入,因为有空格,scanf表示结束
同样的也不可以输入制表符,换行符(回车键)
如果是%c输入一个字符,是没有影响的,也是可以输入空格,换行符号的。
和字符串是不一样的
gets
使用这个需要包括头文件,#include<string.h>
gets 函数的官方格式:char * gets (char * str );
在参数列表中,需要传一个字符型指针,也就是我们要输入的字符串的名(数组的名)
gets()函数的主要作用就是接受从键盘输入的一个字符串。
gets遇到\n也就是回车键或者EOF时停止,并将读取的结果存放在指针所指的字符数组中。
getchar
getchar 遇到空格、回车、制表符都正常读取。
最后让大家都头疼的问题就是scanf,gets,getchar会不会残留\n在缓冲区
scanf和getchar是需要自己设置吸收\n的操作的。而gets是不需要的,gets遇到回车\n时,系统自动用'0'代替'\n',表示字符串结束,所以输入一串字符串按下回车,就完成了一次输入。
gets 函数只会遇见回车时结束遇到空格t制表符都会正常读取,而 scanf 遇到空格回车、制表符都会结束。
*******很难再找到这么简短的总结文章了,不妨收藏以备不时之需*******