我有这个代码:
int main(int argc, char * argv[])
{
int i;
printf("%d%s",argc,argv[1]);
return 0;
}
如果我以 .I 运行此代码,a.out a\=b=
我正在使用C-shell
它的输出是“ a=b=
”有什么办法可以将它的输出更改为“ a\=b=
”。
已编辑问题的更新:
将命令行参数括在引号中:
$ a.out "a\=b="
引号会阻止 shell 以任何方式解释命令行参数,所以只有这个字符串被传递给你的程序。我使用csh
/ bash
.. 两者都使用。
\
或者,您可以用另一个“转义”并跳过双引号:
$ a.out a\\=b=
先前对原始问题的回答:
是的,使用两个\
:
char a[]="a\\=b=";
输出:
a\=b=
说明:
\
是用于表示特殊字符序列的转义字符,例如\t
表示制表符。如果你想实际打印\t
,你需要\
用另一个“转义”它\
。请参阅此示例和输出:
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
这不是函数所独有的printf()
,也不是 C 语言所独有的,可能语言使用反斜杠来指示字符串中的“转义序列”。
printf()
没有忽略您的单个反斜杠,这是解析 C 字符串的方式。反斜杠是一个转义字符,用于指示一些不容易在字符串中输入的字符,例如换行符 ( \n
) 或嵌入的引号 ( \"
)。因此,要包含反斜杠,您必须包含两个反斜杠 ( \\
)。这适用于所有字符串,与printf()
.
是 C 中字符串中的\
转义字符。您可以使用它来访问特殊字符,例如换行符 ( \n
)。如果您想以\
字符的形式访问 ,您也需要对其进行转义:\\
.
\\ 是在 C 中读作 \
\ 是 C 中字符或字符串中唯一用于表示其他字符或字符串的字符。这就是名称“转义”字符的含义。
因为它是以这种方式使用的,所以有必要将反斜杠本身包含在这种序列可指示的符号之一中。
其他一些序列是: \n 新行 \t 制表符 \v 垂直制表符 \a alert bell sound