2016-09-28 73 views
0

无论何时我们需要使用反斜杠(转义字符)打印双引号,我们必须在打开引号并关闭它或仅关闭一次的同时使用它两次。C语言的双引号

即是这样的:

printf(" \" \" "); 

或像这样:

printf(" \" " "); 

哪一个是正确的?

我需要打印(“Whatever!” He said “The Sparrows are flying again.”

+0

类似问题http://stackoverflow.com/questions/9582781/c-sharp-two-double-quotes – code11

+0

如果同样要打印的括号,你必须使用'的printf(“\(\ “什么!”他说道,“麻雀又飞了。”“)”);' –

+0

'printf(“\”“”);'应该生成一个编译器错误。 – chux

回答

1

对于每一个双引号你愿意,你既需要反斜线和双引号的字符串中出现。

0

您可以将您希望忽略的任何引用作为代码进行转义并用作字符串。 所以你的情况会是这样的:

printThis(“\"Whatever!\” He said \“The Sparrows are flying again.\”"); 
+0

哦,明白了!谢谢:) –

+0

'\“'不是一个定义的转义序列,OP使用的是明智的引号。 – chux

+0

我会争论的OP从来没有说过任何关于“聪明的引号”的东西,即使这是出现在文章中的时候,MSWord也是这样的方便的东西,但是,如果OP询问了精明的引语,那么你会是正确的 – durbnpoisn

0

反斜杠是什么让你使用双引号和其他特殊charachters。对于每一个,你应该使用单反斜线:

printf("\"") --> " 
printf("\'") --> ' 
printf("\\") --> \ 

所以printf("\“Whatever!\” He said \“The Sparrows are flying again.\”")会给你所需输出

编辑:作为Chux提到,是没有正规的双引用",在这种情况下,不需要反斜杠,printf("“Whatever!\” He said \“The Sparrows are flying again.”")就足够了。 ,使用反斜杠不会导致即使双引号“智能引号”

+0

'\“'不是一个定义的转义序列,OP使用的是明智的引号 – chux

+0

谢谢。没有看到 – CIsForCookies

+0

尴尬后置代码,编译与“未知的转义序列:'\ 224'”的警告。令我懊恼的是,我经常犯同样的错误。顺便说一句,即使双引号是C语言规范不支持的“引号”,反斜杠也不会引起错误行为。 – chux

0

这是一个双引号由C编译器识别的错误行为:"。以下都不是:“”。看到不同?

因此,你的代码应该阅读,简单地说:

printf("“Whatever!” He said “The Sparrows are flying again.”\n"); 

如果不希望使用“智能”引号,你需要改变常规的报价和逃生所有的人都

printf("\"Whatever!\" He said \"The Sparrows are flying again.\"\n");