printf忽略单反斜杠'\'

时间:2012-06-28 12:01:39

标签: c string printf

我有这段代码:

int main(int argc, char * argv[])
{
int i;
printf("%d%s",argc,argv[1]);
return 0;
}

如果我将此代码作为a.out a\=b=运行。我正在使用C-shell

其输出为“a=b=”,是否可以将其输出更改为“a\=b=”。

4 个答案:

答案 0 :(得分:9)

已修改问题的更新

将命令行参数括在引号中:

  $ a.out "a\=b="

引号阻止shell以任何方式解释命令行参数,因此只需将此字符串传递给您的程序。我使用csh / bash ..works。

或者,你可以逃避" \与另一个并跳过双引号:

  $ a.out a\\=b=

原始问题的上一个答案

是的,使用两个\

char a[]="a\\=b=";

输出:

a\=b=

<强>解释

\是一个用于表示特殊字符序列的转义字符,因此例如\t表示一个制表符。如果你想真正打印\t,你需要&#34;逃避&#34;此\与另一个\。请参阅此示例并输出:

printf("\t-->Hi\n");    /* print regular tab via \t                        */
printf("\\t-->Hi\n");   /* want to print "\t", not tab  ..so we use two \\ */

导致:

    -->Hi
\t-->Hi

{em>不对printf()函数是唯一的,对C来说也是如此,语言可能会使用反斜杠来表示&#34;转义序列&#34;在字符串中。

答案 1 :(得分:7)

printf()并没有忽略你的单反斜杠,而是解析C字符串的方式。反斜杠是一个转义字符,用于指示一些不容易在字符串中输入的字符,例如换行符(\n)或嵌入引号(\")。因此,要包含反斜杠,您必须包含两个反斜杠(\\)。这适用于所有字符串,与printf()无关。

答案 2 :(得分:1)

\是C中字符串中的转义字符。您可以使用它来访问特殊字符,例如换行符(\n)。如果您想要将\作为角色访问,则需要将其转义:\\

答案 3 :(得分:0)

\\在C

中读作\

\是C中字符或字符串内使用的唯一字符,表示其他字符或字符串。这就是名称&#34; escape&#34;的含义。字符。

因为它以这种方式使用,所以有必要将反斜杠本身包含在这样一个序列可指示的符号之一。

其他一些序列是: \ n新行 \ t标签 \ v垂直标签 一声警铃声