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() が期待どおりに文字を待機するように、コードを修正するにはどうすればよいですか?

4

1 に答える 1

0

Mac OS X システムで GCC を使用して問題を再現できません。おそらく、押すと aと のENTER両方が生成される Windows システムを使用していますか?CRLF

いずれにせよ、 ほとんどのシステムではデフォルトでline bufferedgetchar()が設定されているため、 キーを 1 回押しても は通常すぐには返らないことに注意してください。stdinENTER

getchar()のような古い DOS<conio.h>機能の代わりにはなりませんgetch()

それを回避する方法は、使用している O/S によって異なります。

于 2010-12-06T00:01:19.160 に答える