C语言while(getchar()!='\n');
为什么while(getchar()!='\n');能起到清除输入缓冲区的非法字符的作用#include<stdio.h>#include<stdlib.h>#inclu...
为什么while(getchar()!='\n');能起到清除输入缓冲区的非法字符的作用
#include<stdio.h>
#include<stdlib.h>
#include<stdio.h>
main()
{
int magic,guess,counter=0;
int ret;
srand(time(NULL));
magic=rand()%100+1;
do{
printf("Please guess a magic number:");
ret=scanf("%d",&guess);
while(ret!=1)
{
while(getchar()!='\n'); /*清除输入缓冲区的非法字符*/
printf("Please guess a magic number:");
ret=scanf("%d",&guess);
}
counter++;
if(guess>magic)
printf("Wrong!Too big!\n");
else if(guess<magic)
printf("Wrong!Too small!\n");
else
printf("Right!\n");
}while(guess!=magic&&counter<10);
printf("counter=%d\n",counter);
} 展开
#include<stdio.h>
#include<stdlib.h>
#include<stdio.h>
main()
{
int magic,guess,counter=0;
int ret;
srand(time(NULL));
magic=rand()%100+1;
do{
printf("Please guess a magic number:");
ret=scanf("%d",&guess);
while(ret!=1)
{
while(getchar()!='\n'); /*清除输入缓冲区的非法字符*/
printf("Please guess a magic number:");
ret=scanf("%d",&guess);
}
counter++;
if(guess>magic)
printf("Wrong!Too big!\n");
else if(guess<magic)
printf("Wrong!Too small!\n");
else
printf("Right!\n");
}while(guess!=magic&&counter<10);
printf("counter=%d\n",counter);
} 展开
2个回答
展开全部
getchar()函数在while循环中不断读取缓冲区的字符
然后与换行符比较,不等的自热就舍弃了
所以作用相当于flush缓冲区了
更多追问追答
追问
while(getchar()!='\n');
printf("Please guess a magic number:");
while怎么理解?
与换行符不等时直接执行 printf("Please guess a magic number:"); ,然后不断循环吗
追答
while 后面有分号,说明这个while是个空循环,没有执行块的
下面的printf语句是循环结束后执行的
2015-01-05
展开全部
这句循环执行getchar语句,会依次读取缓冲区的字符知道回车键结束符,读取完成后执行一句空语句“;”这样所有缓冲区的字符都读入程序并依次被覆盖执行了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询