我有这个代码:
int main(int argc, char * argv[])
{
int i;
printf("%d%s",argc,argv[1]);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如果我运行此代码为a.out a\=b=.我正在使用C-shell
它的输出是" a=b="是否有任何方式可以将其输出更改为" a\=b=".
已编辑问题的更新:
将命令行参数括在引号中:
$ a.out "a\=b="
Run Code Online (Sandbox Code Playgroud)
引号阻止shell以任何方式解释命令行参数,因此只需将此字符串传递给您的程序.我将csh/ bash..works与两者一起使用.
或者,你可以\用另一个"逃避" 并跳过双引号:
$ a.out a\\=b=
Run Code Online (Sandbox Code Playgroud)
原始问题的上一个答案:
是的,使用两个\:
char a[]="a\\=b=";
Run Code Online (Sandbox Code Playgroud)
输出:
a\=b=
Run Code Online (Sandbox Code Playgroud)
说明:
\是一个转义字符,用于表示特殊字符序列,因此例如\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 \\ */
Run Code Online (Sandbox Code Playgroud)
这导致:
-->Hi
\t-->Hi
Run Code Online (Sandbox Code Playgroud)
这不是printf()函数所特有的,也不是C语言,语言可以使用反斜杠来表示字符串中的"转义序列".
printf()不是忽略你的单反斜杠,而是解析C字符串的方式.反斜杠是一个转义字符,表示一些不容易在字符串中输入的字符,例如换行符(\n)或嵌入引号(\").因此,要包含反斜杠,必须包含两个反斜杠(\\).这适用于所有字符串,与之无关printf().