下面程序中是区别gets()和scanf()函数的。

#include"stdio.h"voidmain(){chara[10],b;inti,sum=0;printf("inputyournumber:\n");fflus... #include "stdio.h"
void main()
{ char a[10],b;
int i,sum=0;
printf("input your number:\n");
fflush(stdin);
scanf("%s",a);
getchar();
/*gets(a); */
printf("find:\n");
scanf("%c",&b);
for(i=0;a[i]!='\0';i++)
{if(a[i]==b)
sum=sum+1;
}
printf("%d",sum);
getch();
}
我想问的是:当用gets()函数输入字符串后回车确认后,回车作为函数的输入内容,函数从缓存区中接受字符串就清理缓存区。当用scanf()函数输入字符串后回车确认后,回车不作为函数的输入内容函数从缓存区中接受字符串后还保留回车建。当执行scanf("%c",&b);时,gets()函数重新从键盘中接受一个字符。而scanf()函数却重缓存中接受那个回车键字符。那为什么在下面加了一条getchar();语句之后就能正确的重新键入字符?
展开
 我来答
百度网友83cdc1c
2013-05-20 · TA获得超过5792个赞
知道大有可为答主
回答量:1907
采纳率:100%
帮助的人:860万
展开全部
getchar就是从缓存里读取一个字符,这里的实际作用就是把前一次scanf遗留在缓存里的回车符给读取出来了,这样缓存里就没有遗留字符了,再次执行getchar或scanf读取字符的时候,就是从键盘读入字符了。
百度网友73ac6fe
2013-05-20 · 超过10用户采纳过TA的回答
知道答主
回答量:34
采纳率:0%
帮助的人:24.9万
展开全部
就是说scanf执行之后,虽然连回车符都放入了缓冲区,但是实际上回车符并未读给a,所以缓冲区还残留一个回车符,getchar之后就可以正常使用缓冲区,即可执行下面的scanf
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sdjkfajl
2013-05-20
知道答主
回答量:9
采纳率:0%
帮助的人:8.5万
展开全部
scanf是不会接受回车和空格的,gets总是以\n结尾
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式