通过K& R' C编程语言'在练习1-10中,要求您用两个反斜杠替换每个制表符,退格键和反斜杠。我注意到我的控制台只返回' \'
我的代码示例
#include <stdio.h>
main ()
{
int c;
while ((c = getchar()) != EOF) {
switch (c) {
case '\t': putchar ('\\'); break;
case ' ': putchar ('\\'); break;
case '\\': putchar ('\\'); break;
default: putchar (c);
}
}
}
修复它我必须把:
switch (c) {
case '\t': putchar ('\\'); putchar ('\\') break;
这与windows和字符文字有关,还是我错过了什么?只是想知道这是否表明我需要阅读一下如何在Windows上对我的编程有所不同(甚至使用gcc编译器)
答案 0 :(得分:3)
你正在成为正则表达式商业电话blackslash hell中许多人的牺牲品。
因为传统上\
用于表示转义序列,所以转义它可以(可以理解)变得有点混乱。
对于您要打印的每个\
,您需要使用其他\
转义它。
display -> write
----------------
\ -> \\
\\ -> \\\\
等。 ad nauseum
不幸的是\\\\
不是char
,因此您将无法使用putchar
,但您需要4个斜杠。您可以使用puts("\\\\")
或使用当前方法使用两个putchar('\\')
。