[英]Unable to break out of “while” loop - C
我试图实现一个简单的while循环,以便用户输入多个标记而不必重新加载应用程序,由于某种原因,无论我输入什么内容,它总是会循环。
我看过使用调试器,它似乎不接受最终的scanf()询问是否重复自身。
int mark = 0;
char grade;
char choice = 'y';
while(choice == 'y')
{
//Request input
printf("enter a mark: ");
scanf("%d", &mark);
//Assess mark
grade = assess(mark);
//Output result
printf("That equals ");
printf("%c", grade);
printf(" when graded\n");
//Repeat?
printf("Again?...\n");
fflush(stdin);
scanf("&c", &choice);
}
我也尝试过做-循环而仍然没有喜悦,知道问题可能出在哪里吗?
至少有两个问题:
fflush(stdin);
未定义-您只能刷新输出流。 和:
scanf("&c", &choice);
应该:
scanf("%c", &choice);
我认为最后一行应该是
scanf("%c", &choice);
代替
scanf("&c", &choice);
fflush()
仅为输出流定义。 不建议将comp.lang.c FAQ用于stdin
。
另外,正如其他人指出的那样,请使用scanf("%c", &choice);
阅读选择。
尝试scanf("%c", &choice);
。
请注意,scanf返回匹配的输入数量,因此您应该检查返回值。 如果由于某种原因输入未映射到字符,则您的变量可能保持不变。 在调用scanf之前,将choice
设置为!= 'y'
,以便仅在输入y
继续。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.