3
#include <stdio.h>
/* replace tabs and backspaces with visible characters */

main()

{
    int c;

    while ((c = getchar()) != EOF) {
        if (c == '\t')
            printf("\\t");
        if (c == '\b')
            printf("\\b");
        if (c == '\\')
            printf("\\\\");
        if (c != '\b')
            if (c != '\t')
                if (c != '\\')
                    putchar(c);
    }
}

为什么按退格键时看不到 \b 退格签名?

4

3 回答 3

1

你需要了解一下else,那个 if-ladder 是相当可怕的。

而且您的终端可能不会发送单个退格字符,实际终端程序如何表示那种“特殊”键可能有点复杂(删除是另一个最爱)。

于 2013-01-08T10:26:28.127 回答
1

如果您使用的是类 unix 系统,您可能想阅读以下内容:http ://en.wikipedia.org/wiki/Cooked_mode

在其他操作系统上,我不知道,但它们也可能对您的输入做一些事情。

于 2013-01-08T10:27:33.257 回答
1

处理的一些字符Terminal。所以你无法控制它。检查这个答案

我在我的MAC终端上试过。但在这个答案中,我没有得到价值1278喜欢。我是为了性格。因此,当我尝试使用条件时,它会打印出值。32backspaceif32\b

if (c == 32 || c == 8)
    printf("\\b");
于 2013-01-08T10:41:30.040 回答