下面程序中是区别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();语句之后就能正确的重新键入字符? 展开
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();语句之后就能正确的重新键入字符? 展开
3个回答
展开全部
就是说scanf执行之后,虽然连回车符都放入了缓冲区,但是实际上回车符并未读给a,所以缓冲区还残留一个回车符,getchar之后就可以正常使用缓冲区,即可执行下面的scanf
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
scanf是不会接受回车和空格的,gets总是以\n结尾
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询