以下是导致我出现问题的代码片段:
#define MAX_NAME_LEN 64
char choice;
char name[MAX_NAME_LEN];
printf("Name: ");
fgets(name, MAX_NAME_LEN, stdin);
choice = getchar();
输入名称并按Enter键后,getchar()也会捕获换行符,而不是等待下一个字符。我如何修复我的代码(如果可能的话,没有像其他getchar()那样的hacky),以便getchar()在输入名称后将按预期等待字符?
答案 0 :(得分:0)
我无法在Mac OS X系统上使用GCC复制您的问题。您是否正在使用Windows系统,按ENTER
可能同时产生CR
和LF
?
无论如何,请注意,getchar()
通常不会在按一次键后立即返回,因为默认情况下,大多数系统stdin
行缓冲,这意味着终端在按下ENTER
之前,子系统不会向用户进程传递任何字符。
getchar()
不能替代<conio.h>
之类的旧DOS getch()
函数。
解决这个问题取决于你的O / S..