1

私はVS10コンソールアプリケーションを持っています。これは2つのchar入力を受け取り、それらの値に基づいていくつかの処理を行う必要があります。次のコードを記述しました。

char c1,c2;
printf("Ener c1:");
c1 = getChar();
//Some desicion is made based on c1
printf("Ener c2:");
c2 = getChar();
//Some desicion is made based on c2

で実行します:

Ener c1:y
Ener c2:S

この実行後、の値はc1is'y'であり、の値c2'\n' どのように解決できますか?

4

2 に答える 2

2

cinから単一の文字を取得すると、ユーザーは技術的に文字「y」を押してから入力するか、「\n」を押します。

\ nはバッファ内にあるため、最初のgetcharの後でバッファをフラッシュして\nを削除する必要があります。使ってみてくださいcin.ignore();

PS:代わりにこれを読んで、あなたがしていることを再考します:

cinバッファーをフラッシュするにはどうすればよいですか?

于 2011-11-29T19:33:50.500 に答える
1

'y'を入力してEnterキーを押すと、アプリケーションは2文字を受け取り、'y'と'\ n'(エンターキー。簡単な解決策は、\ nまたはEOF以外の文字ができるまでループすることです:

while ((c2 = getchar()) != '\n' && c != EOF);
于 2011-11-29T19:36:17.327 に答える