我有这段代码:
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=
”。
答案 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垂直标签 一声警铃声