【发布时间】:2014-10-27 01:33:33
【问题描述】:
嗯,我是编程新手。我的代码有问题。在第一次运行时它工作正常,但在第二次运行时它会跳过 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。
【问题讨论】:
-
尝试将您的
y和Y更改为'y'和'Y' -
输入缓冲区不会自行清除...这就是问题所在。关于这个问题有足够多的重复问题,在你写出来之前,一个快速的谷歌搜索就会回答这个问题
-
使用调试器或在
scanf("%c", &ch);之后添加printf("%d\n", ch)以查看发生了什么。
标签: c while-loop