入力を解析し、履歴を上下にトラバースできますが、バックスペースが機能しません。何故ですか?
void printPrompt(void)
{ // prints working directory prompt
char cwd[256];
getcwd(cwd, 255);
printf("%s> ", cwd);
fflush(stdout);
}
入力を解析し、履歴を上下にトラバースできますが、バックスペースが機能しません。何故ですか?
void printPrompt(void)
{ // prints working directory prompt
char cwd[256];
getcwd(cwd, 255);
printf("%s> ", cwd);
fflush(stdout);
}
DEL
(12月8日)を送信する必要があるときに(12月127日)を印刷しようとしていますBS
。BS
また、おそらくその文字をクリアするためにスペースと別のスペースを送信する必要があります(BS
カーソルを移動するだけです)。したがって、 が得られたらbuf[0] == 8
、8
, 32
, を出力し8
ます。
else if (buf[0] == 8)
{ // Backspace
if (charsRead > 0)
{
line[charsRead - 1] = '\0';
charsRead--;
printf("%c%c%c", 8, 32, 8); // CHANGE HERE
}
}
バックスペースは機能しています。問題は、バックスペースの後の行の再表示です。おそらくキャリッジ リターン (\r) を出力してから、プロンプトを含む行を再出力する必要があります。
編集:私の提案が端末間で100%移植可能かどうかはわかりません。移植性の問題を処理するには、curses などを使用する必要がある場合があります。