putchar(';\\';)返回单个'\';-在windows上使用mingw
学习K&R“C编程语言”和练习1-10,其中要求您用两个反斜杠替换每个制表符、反斜杠和反斜杠。我注意到我的控制台只返回“\” 我的代码示例putchar(';\\';)返回单个'\';-在windows上使用mingw,c,C,学习K&R“C编程语言”和练习1-10,其中要求您用两个反斜杠替换每个制表符、反斜杠和反斜杠。我注意到我的控制台只返回“\” 我的代码示例 #include <stdio.h> main () { int c; while ((c = getchar()) != EOF) { switch (c) { case '\t': putchar ('\\'); break; case ' ': putchar ('\\'); break;
#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);
}
}
}
这与windows和字符文字有关,还是我遗漏了什么?我只是想知道这是否意味着我需要阅读一些关于c语言编程在windows上的不同之处的文章(甚至使用gcc编译器)你是regex业务中许多人所说的受害者 因为传统上
\
是用来表示转义序列的,所以转义它可能(可以理解)有点混乱
对于要打印的每个\
,您都需要使用另一个\
来转义它
display -> write
----------------
\ -> \\
\\ -> \\\\
等等
不幸的是,
\\\
不是字符,因此您将无法使用putchar
,但您需要4个斜杠。您可以使用put(“\\\”)
或使用当前的方法处理两个putchar(“\\”)
即使我在这个问题中键入了两个斜杠,发布后它也会减少为一个,现在我真的很困惑,我认为您需要更改代码。'\\'
只是一个反斜杠字符。'/'
不是一个有效字符。编辑以显示完整的CoderIP,将int作为必须处理的值来处理EOF感谢您,特别是感谢您花时间包含一篇有用的文章
display -> write
----------------
\ -> \\
\\ -> \\\\