c - Backspace 不删除字符,类似于 BASH

标签 c

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

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

最佳答案

当您应该发送 BS(dec 8)时,您正在尝试打印出 DEL(dec 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 - Backspace 不删除字符,类似于 BASH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15366940/

相关文章:

c 如何编写一个程序来计算句子中有多少个单词而不使用字符串

在c中顺时针打印4X4矩阵

c - 将缓冲区内容写入文件

c - C中的结构到二维结构指针赋值

c - 如何清除 UNIX 系统上 tty 输入队列中的未读数据?

c - 我可以使用什么策略对 Magic the Gathering 角文本进行 OCR?

c - gcc 链接器找不到 .so 库文件

c - 我正在尝试找到队列的 C 代码中的安全漏洞

c++ - 使用 SDL 和 GLEW 设置 Visual Studio 项目

C 中的字符频率直方图