我正在尝试使用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
。但是,这些都不起作用。
答案 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