我可以解析输入,在历史中上下遍历,但我的退格不起作用。这是为什么?
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
当您应该发送BS
(dec 8)时,您正在尝试打印(dec 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
}
}
退格键正在工作。问题是在退格后重新显示该行。您可能应该打印回车 (\r),然后重新打印包含提示的行。
编辑:我也不确定我的建议是否可以 100% 跨终端移植。您可能需要使用诸如 curses 之类的东西来处理可移植性问题。