getchar()每隔一次只调用一次

时间:2012-03-04 05:52:35

标签: c getchar

使用Ch标准口译员时,getchar()仅每隔一行运行一次。

C:/> char a = getchar();
C:/> char b = getchar();
b
C:/> char c = getchar();
C:/> char d = getchar();
d

使用scanf("%c", &a)时,我遇到同样的问题;在Vim中,语句被跳过。

printf("\nType of Something\nA for SomethingA\nB for SomethingB "
        "\nC for SomethingC\n\nSelect (A,B,C) > ");
char letter = getchar(); // This statement gets skipped
return 0;

1 个答案:

答案 0 :(得分:2)

当您在键盘上键入“A”时,首先按“A”,然后按“ENTER”,对吗?因此getchar()scanf("%c", ....)会读取两个字符:“A”,以及“ENTER”键中的换行符。

如果您在循环中使用代码,或者只是重复使用代码,则第一个getchar()将从上一个输入中读取换行符。