键盘缓冲区残余信息问题
#include <stdio.h>
int main()
{
int a;
char c;
do
{
scanf("%d",&a);
scanf("%c",&c);
printf("a=%d c=%c\n",a,c);
/*printf("c=%d\n",c);*/
}while(c!=''N'');
}
scanf("%c",&c);这句不能正常接收字符,什么原因呢?我们用printf("c=%d\n",c);将C用int表示出来,启用printf("c=%d\n",c);这一句,看看scanf()函数赋给C到底是什么,结果是 c=10 ,ASCII值为10是什么?换行即\n.对了,我们每击打一下"Enter"键,向键盘缓冲区发去一个“回车”(\r),一个“换行"(\n),在这里\r被scanf()函数处理掉了(姑且这么认为吧^_^),而\n被scanf()函数“错误”地赋给了c.
解决办法:可以在两个scanf()函数之后加个fflush(stdin);,还有加getch(); getchar();也可以,但是要视具体scanf()语句加那个,这里就不分析了,读者自己去摸索吧。但是加fflush(stdin);不管什么情况都可行。
函数名: fflush
功 能: 清除一个流
用 法: int fflush(FILE *stream);
#include <stdio.h>
int main()
{
int a;
char c;
do
{
scanf("%d",&a);
fflush(stdin);
scanf("%c",&c);
fflush(stdin);
printf("a=%d c=%c\n",a,c);
}while(c!=''N'');
}
这里再给一个用“空格符”来处理缓冲区残余信息的示例:
运行出错的程序:
#include <stdio.h>
int main()
{
int i;
char j;
for(i = 0;i < 10;i++)
{
scanf("%c",&j);/*这里%前没有空格*/
}
}
使用了空格控制符后:
#include <stdio.h>
int main()
{
int i;
char j;
for(i = 0;i < 10;i++)
{
scanf(" %c",&j);/*注意这里%前有个空格*/
}
}
可以运行看看两个程序有什么不同。
分享到:
相关推荐
本文从根本上讲解了scanf函数的应用,以及输入时键盘缓冲区的数据形式,相信读完之后你会对scanf有更深一层次的认识。
所有从键盘输入的数据,不管是字符还是数字,都是先存储在内存的缓冲区中,叫作“键盘输入缓冲区”,简称“输入缓冲区”或“输入流”。需要注意的是,对于 %d,在缓冲区中,空格、回车、Tab 键都只是分隔符,不会被 ...
用户从键盘输入的每个字符都会暂时保存到缓冲区,直到按下回车键,输入结束,scanf() 再从缓冲区中读取数据,赋值给变量。 • 如果有数据,哪怕是一个字符,scanf() 也会直接读取,不会等待用户输入
摘 要:本文从scanf 函数使用的多个方面(格式字符及其附加格式说明字符、输入数据的格式、格式说明的分隔符、输入项的使用、格式说明与输入项的对应)介绍scanf函数使用的方法及其注意事项,以使读者正确、有效地...
Linux运维-嵌入式物联网开发教程-C语言的scanf函数.mp4
C语言中scanf函数使用时的常见问题.pdf
(一)基本介绍 Scanf是系统自带的函数,声明包含在stdio.h文件中,因此要是有... scanf(“%c”,&a); ②. 同时输入多个值。Scanf(“%d,%d”,#1,num2); ③. Scanf(“%d\n”,&a);//在内部不能使用\n转义字符,否则没完
王道基础C语言教学视频,快速掌握C语言编写技能,视频非常基础,之前参加王道训练营的时候学习的资料,希望能帮助一些吃语言小白学习。
scanf的用法,希望可以帮助有需的人...........
在学习C语言的时候,printf()是我们学到的第一个函数,相信“hello world”这个例子大家都不会陌生吧,接着就是scanf()这个函数了,这个函数的功能是格式输入,它的函数原型是: int scanf(const char *...
C语言 中scanf详解.pdfC语言 中scanf详解.pdf
文档中详细解析了C语言中scanf的详细用法,在程序设计中需要需要注意的地方,另外还列举了一些经典了错误使用scanf的例子。
X-SCAN-V3.3,WIN7以上可能缺一个dll,去网上下载一个放到system32中就可以用了。
中山大学牛人总结的scanf函数的技巧,看了之后对scanf函数理解会更加深刻。
C语言中scanf函数的使用——C语言教法点滴.pdf
该程序是我写的博客“一起talk C栗子吧(第三十八回:C语言实例--你了解scanf吗)”的配套程序,共享给大家使用
C语言scanf函数应用问题.doc
http://blog.csdn.net/sismvg/article/details/9123689 看这篇文章
浅析C语言中scanf()函数的用法
c语言之scanf格式控制符的完整格式