使用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;
答案 0 :(得分:2)
当您在键盘上键入“A”时,首先按“A”,然后按“ENTER”,对吗?因此getchar()
或scanf("%c", ....)
会读取两个字符:“A”,以及“ENTER”键中的换行符。
如果您在循环中使用代码,或者只是重复使用代码,则第一个getchar()将从上一个输入中读取换行符。