fgetc()退出第二个输入?

时间:2018-01-08 00:34:50

标签: c fgetc

我正在尝试使用C fgetc()并遇到一个奇怪的问题。 我输入以下代码:

    int answer = 0;

    printf("Input1\n");

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

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

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

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

有谁能告诉我我做错了什么?我已尝试刷新stdin,我也尝试在rewind上使用stdin。但是,这些都不起作用。

1 个答案:

答案 0 :(得分:1)

如果您输入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