1

这是导致我出现问题的代码片段:

#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() 在输入名称后按预期等待字符?

4

1 回答 1

0

我无法在 Mac OS X 系统上使用 GCC 复制您的问题。您是否正在使用 Windows 系统,其中按下ENTER可能会同时产生 aCR和 an LF

无论如何,请注意getchar()通常不会在单次按键后立即返回,因为在大多数系统上默认情况下stdinline bufferedENTER ,这意味着终端子系统在按下之前不会将任何字符传递给用户进程。

getchar()不能替代旧的 DOS<conio.h>功能,例如getch().

解决这个问题取决于您使用的操作系统。

于 2010-12-06T00:01:19.160 回答