C语言中,用scanf赋值的时候

C语言中,用scanf赋值的时候,是以回车作为结束的,但回车符还停留在缓冲区,这就导致了有一个回车符将赋值给下一个字符,影响了下一个字符的输入,那么如很避免这种情况发生呢?

scanf是C语言中的一个输入函数,与printf函数一样,都被声明在头文件stdio.h里,因此在使用scanf函数时要加上#include 。(在有一些实现中,printf函数与scanf函数在使用时可以不使用预编译命令#include 。)它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。scanf函数返回成功读入的数据项数,读入数据时遇到了“文件结束”则返回EOF。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-22
scanf("%c %c %c",&a,&b,&c);
这是一个连续输入字符的输入语句,看清楚两个%c之间有空格,你在输入第一个字符后,按回车也好,空格也好,它的作用会落在空格身上,所以避免了你所说的问题。自己可以尝试一下。
另外scanf("%c,%c,%c",&a,&b,&c);这个语句呢,每相邻两个%c之间存在逗号(注意是英文逗号,编程时最好别出现中文标点),输入时每输入一个字符,你需要同时输入逗号,最后输入一次回车,这样也可以避免你所说的问题,但相对来说麻烦一点,如果熟悉的话,可以直接空空格就行.
第2个回答  推荐于2017-11-25
办法很多。在输入字符的语句前面加一句getchar();或fflush(stdin)等等,但最简单的办法是在scanf()函数中的字符控制符前加一个空格!如scanf(" %c",&ch);或scanf("%d %c%s",&n,&ch,&str);。效果嘛,你试试!本回答被提问者和网友采纳
第3个回答  2013-04-22
在后面加一个getchar();吸收掉缓冲区多出来的'\r'
或者先定义一个char a;然后在后面加一个scanf("%c",&a);
第4个回答  2013-04-22
同意楼上
在你的scanf()语句后,插入一个getchar();这样可以读掉之前多的“\n”

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网