嗯,我是编程新手。我的代码有问题。在第一次运行中它工作正常,但在第二次运行中它会跳过 scanf 并退出循环,而调试器显示 ch 仍然是 y 并且调试器显示的另一件事是在第二次迭代中它没有到达 scanf。即使 scanf 被跳过,为什么控制会退出循环,因为 ch 的值没有改变。请帮助我。
#include<stdio.h>
int main()
{
char ch=y;
while(ch==y || ch==Y)
{
printf("Its hello again to check\n");
printf("Do you wish to continue: y or n\n");
scanf("%c", &ch);
}
exit(0);
}
如果我再次修改此代码,如下所示 #包括
int main()
{
char ch=y;
while(ch==y || ch==Y)
{
printf("Its hello again to check\n");
printf("Do you wish to continue: y or n\n");
scanf("%c", &ch);
//fflush(stdin);
printf("Choice entered %d \n", ch);
}
exit(0);
}
即使我使用 fflush,最后一个 printf 也会被跳过。
最佳答案
每当您在输入后按 Enter 时,都会被接受字符的 scanf 消耗(因为按 Enter 也会生成字符)
在 %c 之前添加空格可以解决您的问题,例如:
scanf(" %c", &ch);
或者,在 scanf()
之后放置 getchar()
清理:
#include<stdio.h>
int main()
{
char ch='y';
do {
printf("Its hello again to check\n");
printf("Do you wish to continue: y or n\n");
scanf(" %c", &ch);
}while(ch=='y' || ch=='Y');
}
关于c - 在 while 循环中 scanf 第二次被跳过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25629256/