【问题标题】:How to escape a character如何转义一个字符
【发布时间】:2015-07-16 15:36:21
【问题描述】:

我有这种情况,我需要转义一个字符。 我正在尝试形成一个缓冲区

char buffer[1024]; 
char* x="hello";
char* y="world";
sprintf(buffer,"=%s\n-%s\n ",x,y);

我的目标是获得一个缓冲区,例如

=hello\n-world\n

按照这个确切的顺序。中间的符号,例如 (=, \n, -) 在缓冲区传递给函数时都会执行特定操作。

但是,如果当前代码如上述代码所示打印,我会得到

=hello
-world

而不是

=hello\n-world\n

但这不是我们想要的。我怎样才能达到预期的效果?

【问题讨论】:

  • 不清楚的问题。你想要缓冲区中的换行符,还是其中的反斜杠 n。
  • 顺便说一句,你的意思可能是char* x="hello";,所以你忘记了*,同样的y。因此,请编辑您的问题以改进它。
  • *编辑了问题谢谢.. 愚蠢的问题要问但学到了一些东西。

标签: c string-formatting


【解决方案1】:

您需要转义反斜杠,如下所示:\\

sprintf(buffer,"=%s\\n-%s\\n ",x,y);

【讨论】:

    【解决方案2】:

    试试这个

    sprintf(buffer,"=%s\\n-%s\\n ",x,y)
    

    【讨论】:

      【解决方案3】:
              char buffer[1024]; 
              char x="hello";
              char y="world";
              sprintf(buffer,"=%s\n-%s\n ",x,y);
        Add `\` as indicated     ^     ^   
      

      还有char x="hello" 你想将string 存储在char 变量中,你的程序会崩溃。 更改为其中之一 -

          char *x="hello"; 
      

          char x[]="hello";
      

      【讨论】:

        【解决方案4】:

        您可以通过在其前添加反斜杠来覆盖任何转义序列。 在这种情况下:

        sprintf(buffer,"=%s\\n-%s\\n ",x,y);
        

        【讨论】:

        • 对于代码 sn-ps,请使用代码格式(4 个空格)而不是引号格式。
        【解决方案5】:

        \n 称为换行符转义序列,然后在控制台上打印换行符。您需要通过在反斜杠前加前缀来转义。比如

        sprintf(buffer, "=%s\\n-%s\\n", x, y);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-03-02
          • 2014-07-24
          • 2012-08-02
          • 2015-01-17
          • 2012-11-05
          • 2011-10-15
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多