9

キーが押されたときに無限ループから抜け出すにはどうすればよいですか? 現在、私は getch を使用していますが、読み取る入力がなくなるとすぐにループがブロックされ始めます。

4

5 に答える 5

6

とにかくgetch()から使用している場合は、代わりに使用してみてください。と-の両方が、実際には - 標準 C ではないことに注意してください。conio.hkbhit()getch()kbhit()conio.h

于 2011-07-18T10:17:37.877 に答える
3

kbhit()からの関数conio.hは、いずれかのキーが押された場合にゼロ以外の値を返しますが、のようにブロックしませんgetch()。さて、これは明らかに標準ではありません。しかし、すでにgetch()fromを使用しているためconio.h、コンパイラにはこれがあると思います。

if (kbhit()) {
    // keyboard pressed
}

ウィキペディアから、

conio.h は、古い MS-DOS コンパイラでテキスト ユーザー インターフェイスを作成するために使用される C ヘッダー ファイルです。The C Programming Language book には記載されておらず、C 標準ライブラリ、ISO C の一部でもなく、POSIX で必須でもありません。

DOS、Windows 3.x、Phar Lap、DOSX、OS/2、または Win32 1を対象とするほとんどの C コンパイラには、このヘッダーがあり、デフォルトの C ライブラリで関連するライブラリ関数を提供します。UNIX および Linux を対象とするほとんどの C コンパイラには、このヘッダーがなく、ライブラリ関数は提供されません。

于 2011-07-18T10:18:35.080 に答える
2

この記事を読むことをお勧めします。

ncurses を使用しないループでのユーザー入力のブロックなし。

于 2011-07-18T10:19:42.157 に答える