我正在尝试实现一个简单的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);
}
我也尝试过do-while循环但仍然没有任何乐趣,任何想法可能存在的问题?
答案 0 :(得分:8)
至少有两个问题:
fflush(stdin);
未定义 - 您只能刷新输出流。和
scanf("&c", &choice);
应该是:
scanf("%c", &choice);
答案 1 :(得分:3)
我认为最后一行应该是
scanf("%c", &choice);
而不是
scanf("&c", &choice);
答案 2 :(得分:1)
fflush()
仅为输出流定义。 comp.lang.c FAQ不建议将其用于stdin
。
另外,正如其他人所说,使用scanf("%c", &choice);
来阅读选择。
答案 3 :(得分:1)
尝试scanf("%c", &choice);
。
请注意,scanf返回匹配的输入数,因此您应该检查返回值。如果输入没有,由于som原因,映射到一个字符,你的变量可能会保持不变。在调用scanf之前,请将choice
设置为!= 'y'
,以便只有在输入y
时才会继续。