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
我正在尝试将 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