如何逃避一个角色

时间:2015-07-16 15:36:21

标签: c string-formatting

我有这种情况需要逃避一个角色。 我正在尝试形成一个缓冲区

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

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

5 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:0)

试试这个

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

        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 :(得分:0)

\n被称为换行转义序列,然后在控制台上打印换行符。你需要通过加上反斜杠前缀来逃避这一点。例如

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