問題を示す簡単なCプログラムを作成しました。ここにあります。OS Xは矢印キーでターミナルキャレットを移動します
#include <stdio.h>
int main(int argc, const char * argv[]) {
char buffer[128];
memset(buffer, 0, sizeof(buffer));
printf("Type data:\n");
scanf("%126s", buffer);
printf("%s\n", buffer);
getchar();
return 0;
}
問題は、アプリケーションがscanf関数(とユーザーの入力を待っているときということです)、ユーザの利用者は、彼が入力した行を編集して、矢印で移動キャレットをしたい、キャレットが移動しますが、新しい醜い入力されていません挿入されます。
何らかの理由で、私は何らかの理由でキーを処理しません。私は上のキーで前のタイプされた行に行くこともできません。
明らかにこの動作を有効にする必要があります。助言してもらえますか?どうすればいいですか?
あなたが話していた種類のターミナル指向のI/Oを実行できるようにするには、ncursesライブラリ(またはそれに相当するOS X)を使用する必要があります。標準的なC入出力関数は文字ストリームを扱うので、端末から送られてくるエスケープ文字は扱えません。 –
私はそのようなライブラリについて考えましたが、端末がこれを処理してはいけませんか?多くのアプリはそのような操作を可能にしており、すべてが非標準ライブラリを使用しているのは奇妙なようです。 – Ivan
使用する標準ライブラリがないため、すべて非標準ライブラリを使用します。 –