求解答
#include<stdio.h>
int main()
{
int x = 0;
int sum = 0;
char ch = '\0';
do
{
printf("intput a value : \n");
scanf("%d", &x);
sum = sum + x;
printf("是否继续(y / n)\n");
scanf("%c", &ch);
} while (ch == 'y' || ch == 'Y');
printf("sum : %d\n", sum);
return 0;
}
这样一个求累加的代码,但是由于缓冲区残留‘\n’的问题只能输入一次
于是在网上看到了两种解决办法分别是
#include<stdio.h>
int main()
{
int x = 0;
int sum = 0;
char ch = '\0';
do
{
printf("intput a value : \n");
scanf("%d", &x);
sum = sum + x;
printf("是否继续(y / n)\n");
scanf(" %c", &ch); //(前边添加一个空格)消除上一个'\n'
} while (ch == 'y' || ch == 'Y');
printf("sum : %d\n", sum);
return 0;
}
很不理解为什么加了个空格就可以消除'\n'
还有一种办法
#include<stdio.h>
int main()
{
int x = 0;
int sum = 0;
char ch = '\0';
do
{
printf("intput a value : \n");
scanf("%d", &x);
sum = sum + x;
printf("是否继续(y / n)\n");
while ((ch = getchar()) != EOF && ch != '\n'); //不停地使用getchar()获取缓冲中字符,直到获取的c是“\n”或文件结尾符EOF为止
scanf("%c", &ch);
} while (ch == 'y' || ch == 'Y');
printf("sum : %d\n", sum);
return 0;
}
这个也没看懂为什么要加(ch = getchar()) != EOF
我试了下把(ch = getchar()) != EOF && 去掉
就打不出来y或n的值了
很疑惑,求各位解答,刚学习c语言,基础不太好