如何用C打印引号?

如何用C打印引号?,c,printf,C,Printf,在一次采访中,有人问我 使用printf()函数打印引号 我不知所措。甚至在他们的办公室里也有一台电脑,他们让我试试。我试着这样做: void main() { printf("Printing quotation mark " "); } 但正如我所怀疑的,它没有编译。当编译器得到第一个“时,它认为它是字符串的结尾,而不是。那么我如何才能做到这一点呢?您必须避开引号: printf("\""); 试试这个: #include <stdio.h> int main()

在一次采访中,有人问我

使用
printf()
函数打印引号

我不知所措。甚至在他们的办公室里也有一台电脑,他们让我试试。我试着这样做:

void main()
{
    printf("Printing quotation mark " ");
}

但正如我所怀疑的,它没有编译。当编译器得到第一个
时,它认为它是字符串的结尾,而不是。那么我如何才能做到这一点呢?

您必须避开引号:

printf("\"");
试试这个:

#include <stdio.h>

int main()
{
  printf("Printing quotation mark \" ");
}
#包括
int main()
{
printf(“打印引号”);
}
必须使用字符转义。这是一个鸡和蛋问题的解决方案:如果我需要它来终止一个字符串文字,我该如何写一个“?因此,C创建者决定使用一个特殊字符来改变下一个字符的处理方式:

printf("this is a \"quoted string\"");

此外,您还可以使用“\”来输入特殊符号,如“\n”、“t”、“a”,以输入“\”本身:“\\”等。

除了转义字符外,您还可以使用格式
%c
,并将字符文字用作引号

printf("And I quote, %cThis is a quote.%c\n", '"', '"');

没有反斜杠,特殊字符就有了一个自然的特殊含义。有了反斜杠,它们就可以按原样打印

\   -   escape the next character
"   -   start or end of string
’   -   start or end a character constant
%   -   start a format specification
\\  -   print a backslash
\"  -   print a double quote
\’  -   print a single quote
%%  -   print a percent sign
声明

printf("  \"  "); 
我会把报价打印出来。 您还可以打印这些特殊字符\a、\b、\f、\n、\r、\t和 \v前面有一个(斜杠)。

这个也可以:

printf("%c\n", printf("Here, I print some double quotes: "));
但是如果你计划在面试中使用它,确保你能解释它的作用

编辑:在Eric Postdischil的评论之后,这里有一个不依赖ASCII的版本:

printf("%c\n", printf("%*s", '"', "Printing quotes: "));

输出不是很好,它仍然不是100%可移植的(将打破一些假设的编码方案),但它应该在EBCDIC上工作。

在C编程语言中,
\
用于打印一些在C中具有特殊意义的特殊字符。下面列出了这些特殊字符

\\ - Backslash
\' - Single Quotation Mark
\" - Double Quatation Mark
\n - New line
\r - Carriage Return
\t - Horizontal Tab
\b - Backspace
\f - Formfeed
\a - Bell(beep) sound
#包括
int main(){
char ch=“”;
printf(“%c”,ch);
返回0;
}

输出:“

您应该像这样使用转义字符:

printf("\"");

还记得那本书开头关于转义字符的简短部分吗…?可能重复的
\%
是错误的-它将被视为与
%
相同的
\'
是不需要的-你可以像那样在双引号中加引号。很好的理解。但是你不能在双引号中打印%但是你可以打印百分位使用%%进行签名。如printf(“%%”);如果它不在格式字符串中,您也可以自由使用
“%”
(例如
printf(“使用%s\n、%d打印int”)
)@Angus为什么
\%
不能打印单个
%
?@kedude:printf中的%符号有特殊含义[格式说明符],我们无法打印“%”“使用printf签名(“打印\%\n”)。。但是,如果仍要打印%符号,可以使用ugoren printf(“打印%s\n”,%d”);=>“%”被视为字符串并将被打印。这是错误的。将首先执行内部printf,然后执行外部printf。通常,嵌套printf用于查找控制台中打印的字符总数。这没有错,只是有点扭曲,而且工作得很好。试试看。正如您所说,首先执行内部printf,外部printf-有什么问题吗?它将打印从内部printf输出的数字(打印的字符数)的ascii值。是的,它将打印内部printf中打印的字符数的ascii值。所以数一数,然后在ASCII表中查找。出于娱乐,我很想投票。但是,C标准没有规定C使用ASCII。因此,这个答案在技术上是不正确的。很好的解决方案,但它已经在其他答案中给出了,在halex的答案()中给出了完全相同的代码
printf("\"");