我是编程新手。我的代码有问题。在第一次运行中它工作正常,但在第二次运行时它跳过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);
}
如果我再次修改此代码,如下所示 的#include
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。
答案 0 :(得分:1)
每当你在输入后按Enter键,你的scanf就会接受这个,这是接受一个字符(按下输入也会产生字符)
在%c之前添加空格将解决您的问题,例如:
scanf(" %c", &ch);
或者,在getchar()
scanf()
清理:
#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');
}