Как напечатать кавычки в C?
в интервью Меня попросили
печать кавычки с помощью
printf()
функции
Я был ошеломлен. Даже в их офисе был компьютер, и они сказали мне попробовать. Я попробовал так:
void main()
{
printf("Printing quotation mark " ");
}
но, как я подозревал, он не компилируется. Когда компилятор получает первый "
он думает, что это конец строки, которого нет. Так как же я могу достичь этого?
9 ответов
без обратной косой черты специальные символы имеют естественный особый смысл. С обратной косой чертой они печатают, как появляются.
\ - 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 с (косой чертой) перед ним.
помимо экранирования символа, вы также можете использовать формат %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.