我正在做K& R的练习1-10
编写程序将其输入复制到其输出,将每个选项卡替换为
\t
,每个退格键替换\b
,每个反斜杠替换\\
。这使得标签和退格以明确的方式可见。
我想出了这个......
#include <stdio.h>
int main () {
int c;
printf("\n"); // For readability
while ((c = getchar()) != EOF) {
switch (c) {
case '\t':
printf("\\t");
break;
case '\b':
printf("\\b");
case '\\':
printf("\\");
break;
default:
printf("%c", c);
break;
}
}
}
出于某种原因,它拒绝接触反斜杠。例如,当输入Hello how\ are you?
这样的字符串时,程序的输出是Hello\thow\ are you?
,这意味着它转换了选项卡OK,但不是反斜杠。
我做错了吗?
答案 0 :(得分:5)
您可能希望printf("\\\\");
,而不只是printf("\\");
。
答案 1 :(得分:2)
你应该打印反斜杠和它的逃脱。
目前你只是打印反斜杠 - 在这里你要逃避第二个反斜杠,否则会逃脱收盘双重报价:
printf("\\");
答案 2 :(得分:2)
使用printf("\\\\")
答案 3 :(得分:2)
C编译器在源代码中找到\\
时会做什么?