Backspace不擦除字符,类似于BASH

NoN*_*eY0 0 c

我可以解析输入,在历史中上下遍历,但我的退格不起作用.这是为什么?

void printPrompt(void)
{ // prints working directory prompt
    char cwd[256];
    getcwd(cwd, 255);
    printf("%s> ", cwd);
    fflush(stdout);
}
Run Code Online (Sandbox Code Playgroud)

Xym*_*ech 5

DEL当你应该发送一个BS(12月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
    }
}
Run Code Online (Sandbox Code Playgroud)