读书人

很经典的新手有关问题 while 下 回

发布时间: 2014-01-23 14:48:04 作者: rapoo

很经典的新手问题, while 下 回车的副作用 详细解释
求解
#include<stdio.h>
int main(void)
{
char c;

scanf("%c",&c);
while(1)
{
if(c =='q'){
printf("%d\n",'q');
break;
}
printf(" %d \n",c);

scanf("%c",&c);
}
printf("Done!!\n",c);


return 0;
}
输出的副作用是 输出的时候连带这 回车的 10 也输出了~~
在每个最后不带\n的printf后面加fflush(stdout);
在每个不想受接收缓冲区旧内容影响的scanf前面加rewind(stdin);
另外请检查scanf的返回值。

[解决办法]
我每次都是这样处理的


#include<stdio.h>

int main(void)
{
char c;

scanf("%c%*c",&c);
while(1){
if(c =='q'){
printf("%d\n",'q');
break;
}
printf(" %d \n",c);

scanf("%c%*c",&c);
}
printf("Done!!\n",c);
return 0;
}


%*c就是读入但不赋给任何变量,我通常都是这样处理的,用起来很方便

读书人网 >C++

热点推荐