3

ユーザーがキーを押すのを待つコンソール機能を探しています。Pascal の readkey のようにしたい。コンソールのみのソリューションのように。GUI ライブラリ/グラフィック ライブラリ/ウィンドウ ライブラリ/WinApi 呼び出し (Windows) はありません。これはクロスプラットフォームであり、(できれば) C std ライブラリまたは C++ クラス ライブラリの一部である必要があります。そのような関数/クラスメソッドなどはありますか?

4

5 に答える 5

6

C 標準ライブラリには、「キーボード バッファ」という概念がありません。入力/出力はほとんど行ベースです (ENTER が押されたときにトリガーされます)。

いくつかのオプションがあります:

  • ncursesなどの外部ライブラリを使用する
  • 端末のバッファリング戦略を変更しsetvbuf()て使用しますfgetc()(バッファリング戦略を変更しなかった場合は、ENTERを待ちます)
于 2011-09-18T11:36:26.793 に答える
2

私が知る限り、あなたのアイテムにポータブルな解決策はありません. Windows では、コンソールから直接 char を取得するために<conio.h>呼び出される関数を持つヘッダーを使用できます。getch()Linux を使用している場合は、ライブラリncursesを使用できます。

于 2011-09-18T11:37:00.030 に答える
1

Windows ランタイム環境を使用している場合は、非標準の C 関数 kbhit( ) を使用できます。また、Windows に相当する C 言語の Linux もありますkbhit( )。この関数はまさにあなたが望むことをします: キーボード文字が文字を読み取らずに入力されたかどうかを教えてくれます。または、代わりに、入力されている場合は 1 文字を読み取って配信します。ここで見つけることができます:

http://pwilson.net/sample.html

「Linux および Unix の単一文字キーボード入力」という見出しの段落までスクロールします。

HTH

于 2011-09-18T11:40:41.693 に答える
0

単純:

getchar();

文字通り、readkey()C# の for に相当します。

于 2021-05-07T14:20:54.643 に答える
0

考慮された _getch ?

于 2011-09-18T11:28:45.447 に答える