fgetc() 在第二个输入时退出?

fgetc() exits on second input?

我正在尝试将 C 的 fgetc() 和 运行 转化为一个 st运行ge 问题。 我在下面输入了以下代码:

    int answer = 0;

    printf("Input1\n");

    answer = fgetc(stdin);
    printf("%c\n", answer);

    printf("Input2\n");
    answer = fgetc(stdin);
    printf("%c\n", answer);

但是,每次我输入 space 以外的值时,都会发生这种情况:

 Input1
 1
 1
 Input2 # It doesn't wait for my input here

谁能告诉我我做错了什么?我试过刷新 stdin,我也试过在 stdin 上使用 rewind。但是,none 这些工作。

如果你输入1然后回车,输入的末尾有\n个字符。第二个 fgetc 将读取 \n 字符。

对于调试(如评论中所建议的),您可以将 printf("%c\n", answer) 替换为

printf("Got %d (%c)\n", answer, (isprint(answer) ? answer : '.'));

结果应该是:

Input1
1
Got 49 (1)
Input2
Got 10 (.) <- new line