我是编程新手。我的代码有问题。在第一次运行中它运行良好,但在第二次运行中,它跳过scanf并退出循环,而调试器显示ch仍然是y,并且调试器显示的另一件事是,在第二个迭代中它没有到达scanf。即使扫描被跳过,为什么控制会脱离循环,因为ch的值并没有改变。请帮帮我。
#include<stdio.h>
int main()
{
char ch=y;
while(ch==y || ch==Y)
{
printf("Its hello again to checkn");
printf("Do you wish to continue: y or nn");
scanf("%c", &ch);
}
exit(0);
}
如果我像下面这样再次修改此代码#包括
int main()
{
char ch=y;
while(ch==y || ch==Y)
{
printf("Its hello again to checkn");
printf("Do you wish to continue: y or nn");
scanf("%c", &ch);
//fflush(stdin);
printf("Choice entered %d n", ch);
}
exit(0);
}
即使我使用fflush,它也会跳过最后一次打印。
每当您在输入后按enter键时,这都会被正在接受字符的扫描所消耗(因为按enter键也会导致字符)
在%c之前添加空格将解决您的问题,例如:
scanf(" %c", &ch);
或者,在scanf()
之后放一个getchar()
清洁:
#include<stdio.h>
int main()
{
char ch='y';
do {
printf("Its hello again to checkn");
printf("Do you wish to continue: y or nn");
scanf(" %c", &ch);
}while(ch=='y' || ch=='Y');
}