我有这个代码:
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