//请今后要用 int c; scanf("%c",&c); //时,都改为 char s[2]; int c; scanf("%1s",s); c=s[0];
比如你输入:4 然后按下回车 此时,输入缓冲区是4+回车符 你scanf %d只是把4读走了,而会遗留回车符 scanf %s和%d并不会单独读入一个输入缓冲区遗留的回车符来结束语句 而scanf %c却是可以的,此时才需要在之前加一句getchar()来读掉遗留的回车符
http://bbs.csdn.net/topics/350097500?locationNum=4&fps=1 楼主可以看看这个。。
char str[100]; char c; scanf("%s",str); scanf("%c",&c); 输入完后\n是留在缓冲区,你可以用上面代码验证
char str[100]; char c; scanf("%s",str); scanf("%c",&c);
[quote=引用 8 楼 赵4老师的回复:]在每个最后不带\n的printf后面加fflush(stdout); 在每个不想受接收缓冲区旧内容影响的scanf前面加rewind(stdin); 另外请检查scanf的返回值。 //请今后要用 int c; scanf("%c",&c); //时,都改为 char s[2]; int c; scanf("%1s",s); c=s[0];
在每个最后不带\n的printf后面加fflush(stdout); 在每个不想受接收缓冲区旧内容影响的scanf前面加rewind(stdin); 另外请检查scanf的返回值。 //请今后要用 int c; scanf("%c",&c); //时,都改为 char s[2]; int c; scanf("%1s",s); c=s[0];
字符与字符串不同,读完整数后,再读字符%c,需要用getchar吸收掉回车,而%s会跳过回车
33,321
社区成员
41,774
社区内容
加载中
试试用AI创作助手写篇文章吧