C、虽然不起作用,

标签 c do-while

#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/

相关文章:

c - 字符串中最长的回文及其长度

c - do-while 循环中的 scanf() 会导致无限循环,即使测试输入也是如此

c - 函数无限循环 - do/while 函数

java - Do-while 问题 java

c - 如何修复 ' Error: invalid read of size 4'

c - 如何解决C中无法解决的外部错误

c - 自由(): invalid next size (normal) with qsort()

c++ - 如何初始化 GLfloat 数组?

c - C程序中的错误处理程序

c - C 货币面额