为什么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); } }
为什么我在按下退格键时无法看到\b退格签名?您需要了解为什么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条件时,它输
其他方面的信息,如果梯形图非常可怕
而且您的终端可能不发送任何退格字符,这可能是实际终端程序如何表示这种“特殊”键(删除是另一个常用项)。如果您使用的是类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");