Как напечатать кавычки в C?

в интервью Меня попросили

печать кавычки с помощью printf() функции

Я был ошеломлен. Даже в их офисе был компьютер, и они сказали мне попробовать. Я попробовал так:

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

но, как я подозревал, он не компилируется. Когда компилятор получает первый " он думает, что это конец строки, которого нет. Так как же я могу достичь этого?

9 ответов


попробуйте это:

#include <stdio.h>

int main()
{
  printf("Printing quotation mark \" ");
}

без обратной косой черты специальные символы имеют естественный особый смысл. С обратной косой чертой они печатают, как появляются.

\   -   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 с (косой чертой) перед ним.


вы должны избежать quotationmark:

printf("\"");

помимо экранирования символа, вы также можете использовать формат %c и используйте символьный литерал для кавычки.

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

на языке программирования 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

вы должны использовать побег символов. Это решение этой проблемы с курицей и яйцом: Как написать ", если мне нужно завершить строковый литерал? Итак, создатели C решили использовать специальный символ, который меняет обработку следующего символа:

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

также вы можете использовать " \ " для ввода специальных символов, таких как "\n", "\t", "\a", для ввода самого"\": "\ \ " и так далее.


это тоже работает:

printf("%c\n", printf("Here, I print some double quotes: "));

но если вы планируете использовать его в интервью, убедитесь, что вы можете объяснить то, что он делает.

редактировать: после комментария Эрика Постпишила, вот версия, которая не полагается на ASCII:

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

выход не так хорош, и он все еще не 100% портативный (сломается на некоторых гипотетических схемах кодирования), но он должен работать на EBCDIC.


#include<stdio.h>
int main(){
char ch='"';
printf("%c",ch);
return 0;
}

выход: "


вы должны использовать Escape-символ, как этот:

printf("\"");