23

ユーザーが「バックスペース」文字を入力したかどうかを確認する方法を知りたいです。

C プログラムでを使用してgetch() function i.e. "key = getch()"います。バックスペースが押されたときに確認したいと思います。この線:

 if(key = '\b') { ....

動作しません。

4

5 に答える 5

29

読み取りの問題Backspaceは、バックスペースなどのキーが端末ドライバーによって処理されるという点で、ほとんどの端末が「調理済み」であることです。ただし、curses 関数getch()は、端末に関連付けられていないため、バックスペースを読み取ることができます。

編集

あなたのコード入力に使用getch()されていることに気付きました。ちょっとしたテスト プログラムを実行して、getch()バックスペースを押すと 127 を返しました。したがって、試してください:

if (key == 127 || key == 8) { ... /* Checks for both Delete or Backspace */

また、サンプル コードでは、等値演算子を使用する必要があるときに代入演算子を使用していることにも注意してください。===

于 2010-12-06T04:57:20.277 に答える
1

I/O ストリームのタイプが役立つ場合があります。標準入力ストリームは一種のライン バッファ ストリームであり、'\n' 文字を書き込むまでフラッシュされません。フル バッファ ストリームは、バッファがいっぱいになるまでフラッシュされません。フル バフ ストリームでバックスペースを書き込むと、'\b' がキャプチャされる場合があります。

UNIX 環境アドバンテージ プログラムを参照してください。

于 2010-12-06T05:14:29.253 に答える
1

関数がどのライブラリからのものかは言いませんでした (C 標準の一部ではありません) が、ncurses のライブラリである場合は、 againstgetch()の値を確認できます。keyKEY_BACKSPACE

于 2016-09-07T06:57:49.057 に答える
-4

システム入力ドライバはライン バッファリングされていると思います。したがって、標準Cでは不可能です。

于 2010-12-06T04:54:34.097 に答える