#include <stdio.h>
int main()
{
int x, y, i, temp, sum;
char j = 'y';
do
{
...stuff...
printf ("\nPlay again? (y\\n)\n");
scanf("%c",&j);
}
while (j == 'y');
return 0;
}
程序执行一次操作后退出,无需等待用户输入。 运行一次后显示“按任意键继续”。 如何解决这个问题?
最佳答案
这通常意味着您的“内容”在输入流中留下了一些字符,scanf
成功读取了这些字符。由于缓冲区中的内容可能不是'y'
,因此循环终止。
一种解决方案是在执行 scanf
之前刷新输入流。看到这里How to clear input buffer in C?
由于在许多情况下,缓冲区中剩余的数据通常是空格(如换行符),因此一种简单的解决方案可能是执行 scanf("%c", ...)
(请注意%c
之前有多余的空格),甚至 scanf("%s", ...)
。在这两种情况下,待处理的空白都会被自动跳过。
关于C、虽然不起作用,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19622187/