3

コード 1:-

char ch1, ch2;

printf("Input the first character:");

scanf("%c", &ch1); 

while(getchar()!='\n');

printf("Input the second character:");

ch2 = getchar();

この場合、最初の入力で押されwhile(getchar()!='\n');た効果をクリアします。enter-key

コード 2:-

char ch1, ch2;

printf("Input the first character:");

scanf("%c", &ch1); 

while(getch()!='\n');

printf("Input the second character:");

ch2 = getchar();

この場合、最初の入力で押されwhile(getch()!='\n');た効果をクリアしないでください。enter-keyそして、ループは無限であることが判明しました。

getch()getchar()この場合の機能の違いは何ですか?

4

3 に答える 3

1

getch()からcurses.hです:

get[ting]... curses 端末キーボードからの文字

getchar()からstdio.hです:

[stdin] から次の文字を読み取り、それを int への unsigned char キャスト、またはファイルまたはエラーの末尾の EOF として返します。

したがって、最初の例は、呼び出しから'\n'残された改行文字 ( ) を読み取ることです。すべてが機能します。stdinscanf()

2番目の例では、使用もリンクもしていcursesないため、遅延なしモードでは、入力が待機していない場合、値ERRは から返されgetch()ます。ERR-1'\n'です10。それらは一致しないため、待機中の無限ループに入ります-1==10

于 2014-03-20T18:06:39.763 に答える