putchar(';\\';)返回单个'\';-在windows上使用mingw

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;

学习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);
  }
 }

}

这与windows和字符文字有关,还是我遗漏了什么?我只是想知道这是否意味着我需要阅读一些关于c语言编程在windows上的不同之处的文章(甚至使用gcc编译器)

你是regex业务中许多人所说的受害者

因为传统上
\
是用来表示转义序列的,所以转义它可能(可以理解)有点混乱

对于要打印的每个
\
,您都需要使用另一个
\
来转义它

display -> write
----------------
  \     -> \\
  \\    -> \\\\
等等


不幸的是,
\\\
不是
字符,因此您将无法使用
putchar
,但您需要4个斜杠。您可以使用
put(“\\\”)
或使用当前的方法处理两个
putchar(“\\”)

即使我在这个问题中键入了两个斜杠,发布后它也会减少为一个,现在我真的很困惑,我认为您需要更改代码。
'\\'
只是一个反斜杠字符。
'/'
不是一个有效字符。编辑以显示完整的CoderIP,将int作为必须处理的值来处理EOF感谢您,特别是感谢您花时间包含一篇有用的文章
display -> write
----------------
  \     -> \\
  \\    -> \\\\