为什么K&;中的ex.1-10无法识别\b;R #包括 /*用可见字符替换制表符和退格*/ main() { INTC; 而((c=getchar())!=EOF){ 如果(c=='\t') printf(“\\t”); 如果(c=='\b') printf(“\\b”); 如果(c=='\\') printf(“\\\”); 如果(c!='\b') 如果(c!='\t') 如果(c!=“\\”) 普查尔(c); } }

为什么K&;中的ex.1-10无法识别\b;R #包括 /*用可见字符替换制表符和退格*/ main() { INTC; 而((c=getchar())!=EOF){ 如果(c=='\t') printf(“\\t”); 如果(c=='\b') printf(“\\b”); 如果(c=='\\') printf(“\\\”); 如果(c!='\b') 如果(c!='\t') 如果(c!=“\\”) 普查尔(c); } },c,kernighan-and-ritchie,C,Kernighan And Ritchie,为什么我在按下退格键时无法看到\b退格签名?您需要了解其他方面的信息,如果梯形图非常可怕 而且您的终端可能不发送任何退格字符,这可能是实际终端程序如何表示这种“特殊”键(删除是另一个常用项)。如果您使用的是类unix系统,您可能希望阅读以下内容: 在其他操作系统上,我不知道,但它们也可能对您的输入产生影响。一些由终端处理的字符。所以你无法控制它。看看这个 我在我的MAC终端中进行了尝试。但是我没有得到像这样的值127或8。我得到了backspace字符的32。因此,当我用32尝试if条件时,它输

为什么我在按下退格键时无法看到\b退格签名?

您需要了解
其他方面的信息,如果梯形图非常可怕


而且您的终端可能不发送任何退格字符,这可能是实际终端程序如何表示这种“特殊”键(删除是另一个常用项)。

如果您使用的是类unix系统,您可能希望阅读以下内容:


在其他操作系统上,我不知道,但它们也可能对您的输入产生影响。

一些由
终端处理的字符。所以你无法控制它。看看这个

我在我的
MAC
终端中进行了尝试。但是我没有得到像这样的值
127
8
。我得到了
backspace
字符的
32
。因此,当我用
32
尝试
if
条件时,它输出了
\b

#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);
    }
}

关于你的代码的几点评论:
getchar
是邪恶的,有副作用的条件是邪恶的,如果级联也是邪恶的(如果它们可以方便地被switch/case语句代替,这就是这里的
case
:D(双关语)
Ctrl
+
Backspace
=
^H
if (c == 32 || c == 8)
    printf("\\b");