4

我有这个代码:

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=”。

4

4 回答 4

9

已编辑问题的更新

将命令行参数括在引号中:

  $ 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 语言所独有的,可能语言使用反斜杠来指示字符串中的“转义序列”。

于 2012-06-28T12:03:06.660 回答
7

printf()没有忽略您的单个反斜杠,这是解析 C 字符串的方式。反斜杠是一个转义字符,用于指示一些不容易在字符串中输入的字符,例如换行符 ( \n) 或嵌入的引号 ( \")。因此,要包含反斜杠,您必须包含两个反斜杠 ( \\)。这适用于所有字符串,与printf().

于 2012-06-28T12:06:28.110 回答
1

是 C 中字符串中的\转义字符。您可以使用它来访问特殊字符,例如换行符 ( \n)。如果您想以\字符的形式访问 ,您也需要对其进行转义:\\.

于 2012-06-28T12:07:18.343 回答
0

\\ 是在 C 中读作 \

\ 是 C 中字符或字符串中唯一用于表示其他字符或字符串的字符。这就是名称“转义”字符的含义。

因为它是以这种方式使用的,所以有必要将反斜杠本身包含在这种序列可指示的符号之一中。

其他一些序列是: \n 新行 \t 制表符 \v 垂直制表符 \a alert bell sound

于 2017-05-31T04:15:59.907 回答