我可以解析输入,在历史中上下遍历,但是我的backspace不起作用。为什么?
void printPrompt(void)
{ // prints working directory prompt
char cwd[256];
getcwd(cwd, 255);
printf("%s> ", cwd);
fflush(stdout);
}
最佳答案
当您发送DEL
(12月8日)时,您正在尝试打印BS
(12月127日)。您可能还需要发送一个空格和另一个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
}
}
关于c - 退格键不擦除字符,类似于BASH,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15366940/