C语言 新手问题 求大神相助
#include <stdio.h>
int getValue (int a)
{
int result=1;
for(int i=1;i<=a;i++)
result=result*i;
return result;
}
int main(void)
{
int a;
char c;
//scanf("%d ",&a);
//scanf("%c",&c);
//printf("%d,%c",a,c);
do{
printf("Please input the number of what you want : \n");
scanf("%d",&a);
printf("the result of %d ! is %d\n",a,getValue(a));
printf("continue?:('y' or 'n')\n");
//fflush(stdin);
scanf("%c",&c);
}while(c!='n');
return 0;
}
不用fflush,不能实现我的目的。就是按y,就可以继续,结果不行,我不知道怎么回事。有个同学给我说缓冲区的问题,我不是很明白。
[解决办法]
将
scanf("%c",&c);
改为
scanf(" %c",&c);
也就是格式字符串前加个空格。
空格在scanf中表示 忽略空白字符
BTW:printf/scanf这种C/C++最常用的函数都不会,还搞个毛呀?
[解决办法]
scanf(" %c",&c); //%c前加空格就可以解决问题
否则此时读入的是你敲完数字后的回车,debug一下就可以看出来!
[解决办法]
fflush(stdin);的作用是清空输入缓冲区,这么做是为了确保不影响后面的数据读取。
一般来说读完一个字符串后紧接着又要读取另一个字符,中间要加一句fflush(stdin);来情况缓冲区,否则上一次输入的字符可能会留在缓冲区。
[解决办法]
http://blog.csdn.net/kosl90/article/details/6683965
[解决办法]
这个代码我看了!你的问题出在 scanf()上,不知道你的操作时怎样的,如果你先输入 数字然后 回车的话 那末 你的 '\n'就被 c接收了 。建议 在scanf后紧跟一个getchar();