我在编程方面有点菜鸟,特别是在 C 语言方面。我正在尝试一些代码来了解有关 C 语法的更多信息。这是我的问题:为什么getchar()
下面代码段中的第二个不起作用?我的意思是我想安慰等到我进入然后完成。
#include<stdio.h>
#include<curses.h>
int main() {
char ch = getchar();
getchar();
return 0;
}
PS:我使用的是 ubuntu 17.10。
我在编程方面有点菜鸟,特别是在 C 语言方面。我正在尝试一些代码来了解有关 C 语法的更多信息。这是我的问题:为什么getchar()
下面代码段中的第二个不起作用?我的意思是我想安慰等到我进入然后完成。
#include<stdio.h>
#include<curses.h>
int main() {
char ch = getchar();
getchar();
return 0;
}
PS:我使用的是 ubuntu 17.10。
如评论中所述,您正在输入两个字符。字母a
和换行符 ( \n
)。显示第二个 getchar() 接受\n
。
如果你想使用第二个 getchar() 那么在使用它之前使用fflush(stdin)
. fflush(stdin) 通常会删除(刷新)这种类型的额外字符(在您的情况下\n
)。或者您可以执行以下操作
#include<stdio.h>
#include<curses.h>
int main() {
char ch;
printf("Enter a charcter: ");
ch = getchar();
printf("\nyou typed the character ");
putchar(ch);
while ((getchar()) != '\n'); //fflush(stdin); /* use this*/
getchar();
return 0;
}
这里“while ((getchar()) != '\n');” 读取缓冲区字符直到结束并丢弃它们(包括换行符)并在“scanf()”语句清除输入缓冲区并允许在所需容器中输入之后使用它。
还可以查看以下链接。