ユーザーが「バックスペース」文字を入力したかどうかを確認する方法を知りたいです。
C プログラムでを使用してgetch() function i.e. "key = getch()"
います。バックスペースが押されたときに確認したいと思います。この線:
if(key = '\b') { ....
動作しません。
読み取りの問題Backspaceは、バックスペースなどのキーが端末ドライバーによって処理されるという点で、ほとんどの端末が「調理済み」であることです。ただし、curses 関数getch()
は、端末に関連付けられていないため、バックスペースを読み取ることができます。
あなたのコードが入力に使用getch()
されていることに気付きました。ちょっとしたテスト プログラムを実行して、getch()
バックスペースを押すと 127 を返しました。したがって、試してください:
if (key == 127 || key == 8) { ... /* Checks for both Delete or Backspace */
また、サンプル コードでは、等値演算子を使用する必要があるときに代入演算子を使用していることにも注意してください。=
==
I/O ストリームのタイプが役立つ場合があります。標準入力ストリームは一種のライン バッファ ストリームであり、'\n' 文字を書き込むまでフラッシュされません。フル バッファ ストリームは、バッファがいっぱいになるまでフラッシュされません。フル バフ ストリームでバックスペースを書き込むと、'\b' がキャプチャされる場合があります。
UNIX 環境アドバンテージ プログラムを参照してください。
関数がどのライブラリからのものかは言いませんでした (C 標準の一部ではありません) が、ncurses のライブラリである場合は、 againstgetch()
の値を確認できます。key
KEY_BACKSPACE
システム入力ドライバはライン バッファリングされていると思います。したがって、標準Cでは不可能です。