printf忽略单反斜杠’\’
我有这个代码:
int main(int argc, char * argv[]) { int i; printf("%d%s",argc,argv[1]); return 0; }
如果我将此代码作为a.out a\=b=
运行a.out a\=b=
。我正在使用C-shell
它的输出是“ a=b=
”是否有任何方式可以将其输出更改为“ a\=b=
”。
已编辑问题的更新 :
将命令行参数括在引号中:
$ a.out "a\=b="
引号阻止shell以任何方式解释命令行参数,因此只需将此字符串传递给您的程序。 我使用csh
/ bash
..works。
或者,你可以用另一个“逃避” \
并跳过双引号:
$ 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垂直制表符\警报铃声