putchar(' \\')返回单个' \' - 在使用mingw的窗户上

时间:2016-03-06 17:24:38

标签: 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;
      case '\\': putchar ('\\'); break;
      default:   putchar (c);
  }
 }

}

修复它我必须把:

  switch (c) {
      case '\t': putchar ('\\'); putchar ('\\') break;

这与windows和字符文字有关,还是我错过了什么?只是想知道这是否表明我需要阅读一下如何在Windows上对我的编程有所不同(甚至使用gcc编译器)

1 个答案:

答案 0 :(得分:3)

你正在成为正则表达式商业电话blackslash hell中许多人的牺牲品。

因为传统上\用于表示转义序列,所以转义它可以(可以理解)变得有点混乱。

对于您要打印的每个\,您需要使用其他\转义它。

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

等。 ad nauseum

不幸的是\\\\不是char,因此您将无法使用putchar,但您需要4个斜杠。您可以使用puts("\\\\")或使用当前方法使用两个putchar('\\')