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; 

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

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