0

ncursesで作成しているターミナルアプリケーションにいくつかの詳細を追加しようとしています。

このアプリケーションは、タイムアウト付きのクイズのようなものです...ユーザーが時間を浪費しすぎると、タイムアウトが発生して画面がクリーンアップされます。

問題:ユーザーがタイムアウト前に挿入したテキストを表示し、必要に応じて編集/再編集するにはどうすればよいですか?

例:

Q:幸せですか?(正解はい、嬉しいです)

A:はい、私はfeです(タイムアウト、画面をきれいにし、質問は再度印刷されますが、「はい、私はfe」は印刷されません)。

これをstdinバッファまたはラインバッファに追加する可能性があるかどうかはわかりません...

アイデア...

どうもありがとう

4

1 に答える 1

0

あなたはそのようにそれをすることができます:

  • 呼び出してキーボード読み取りのブロックを無効にするnodelay(stdscr, TRUE);
  • ループ内で、キーが押されたかgetch()どうかを確認し、それが0より大きい値を返すかどうかを確認します
    • はいの場合、通常どおりキーを処理します
    • それ以外の場合は、タイムアウトを使用して数マイクロ秒(ビジーウェイトなし!)スリープしusleep()、チェックします。タイムアウトが発生した場合は、それを処理します
于 2012-10-03T22:19:13.323 に答える