case后面的测试用数字标示和字母标示运行结果不同 字母标示怎么多循环了一轮
这个问题的原因是输入 'X' 后并不会立即结束getchar函数,而是将字符 'X' 存储在缓冲区中等待下一次读取,然后再输入回车符 '\n' 触发上一次输入,紧接着程序再次进入循环,由于缓冲区中还剩下一个'\n' 字符,所以循环条件判断不为真,程序继续执行,此时printf语句又会输出一次。
解决该问题的方法是在读取字符之前先使用getchar函数读取无用字符,例如:
int main()
{
char choice;
while ((choice = getchar()) != 'D')
{
while (getchar() != '\n'); // 读取并丢弃缓冲区中的无用字符
printf("A");
fflush(stdout); // 强制刷新输出缓冲区
}
return 0;
}