我可以解析输入,在历史中上下遍历,但是我的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时,打印出8328

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/

10-09 13:10