私はWindows7でC-Free4Standardを使用しており、Cプログラムを作成しています。
プログラムを一時停止する関数としてgetch()を使用していますが、押された文字が画面にエコーし、Enterキーが押されるのを待ってから次に進みます(方法と何ら変わりはありません) scanfは機能します)。getche()を試しましたが、エコーは表示されますが、正常に動作します。
getch()関数の問題は何でしょうか?
私はWindows7でC-Free4Standardを使用しており、Cプログラムを作成しています。
プログラムを一時停止する関数としてgetch()を使用していますが、押された文字が画面にエコーし、Enterキーが押されるのを待ってから次に進みます(方法と何ら変わりはありません) scanfは機能します)。getche()を試しましたが、エコーは表示されますが、正常に動作します。
getch()関数の問題は何でしょうか?
getch、wgetch、mvgetch、および mvwgetch ルーチンは、ウィンドウから文字を読み取ります。遅延なしモードでは、待機中の入力がない場合、値 ERR が返されます。遅延モードでは、プログラムは、システムがテキストをプログラムに渡すまで待機します。cbreak の設定に応じて、これは 1 文字の後 (cbreak モード) または最初の改行の後 (nocbreak モード) になります。半遅延モードでは、プログラムは文字が入力されるか、指定されたタイムアウトに達するまで待機します。
多かれ少なかれ同じ方法が Windows でも使用されます。_getch() を使用して、バッファリングせずにアプリケーションで使用できる入力文字を取得できます。
pause
実際、何かを入力するまでプログラムを実行するにはいくつかの方法があります。その方法の 1 つはgetchar() (関数セットの一部でstdio.h
あり、公式の標準ライブラリ) を使用することです。同じ効果が得られます。 as (この関数は、公式ライブラリではないconio.hgetch()
ライブラリの関数セットの一部です)。
Enter
問題が、質問であまり明確ではない文字を入力するたびに押すのを避けたい場合)、これを読んでください: How to avoid press enter with any getchar()