web-dev-qa-db-fra.com

Comment puis-je imprimer un guillemet en C?

Dans une interview on m'a demandé

Imprimer un guillemet à l'aide de la fonction printf()

J'étais dépassé. Même dans leur bureau, il y avait un ordinateur et ils m'ont dit de l'essayer. J'ai essayé comme ça:

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

mais comme je le soupçonnais, cela ne compile pas. Lorsque le compilateur obtient le premier ", il pense que c'est la fin de la chaîne, ce qui n'est pas le cas. Alors, comment puis-je y parvenir?

20
Mistu4u

Essaye ça:

#include <stdio.h>

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

Sans barre oblique inverse, les caractères spéciaux ont une signification spéciale naturelle. Avec une barre oblique inverse, ils s'impriment au fur et à mesure qu'ils apparaissent.

\   -   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

La déclaration 

printf("  \"  "); 

vous imprimera les guillemets . Vous pouvez également imprimer ces caractères spéciaux\a,\b,\f,\n,\r,\t et \v avec un (barre oblique) précédent.

16
Angus

Vous devez échapper au guillemet:

printf("\"");
14
halex

\ est utilisé dans le langage de programmation C pour imprimer certains des caractères spéciaux ayant une signification particulière en C. Ces caractères spéciaux sont énumérés ci-dessous.

\\ - Backslash
\' - Single Quotation Mark
\" - Double Quatation Mark
\n - New line
\r - Carriage Return
\t - Horizontal Tab
\b - Backspace
\f - Formfeed
\a - Bell(beep) sound
8
rashok

En plus d'échapper au caractère, vous pouvez également utiliser le format %c et utiliser le littéral de caractère pour un guillemet.

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

Vous devez utiliser escaping of characters. C'est une solution à ce problème de poulet et d'oeufs: comment écrire un ", si j'en ai besoin pour terminer un littéral de chaîne? Alors, les créateurs de C ont décidé d'utiliser un caractère spécial qui modifie le traitement du prochain caractère: 

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

Vous pouvez aussi utiliser '\' pour saisir des symboles spéciaux tels que "\ n", "\ t", "\ a", pour saisir "\" lui-même: "\\", etc.

4
Dmytro Sirenko

Celui-ci fonctionne aussi:

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

Mais si vous envisagez de l’utiliser dans une interview, assurez-vous de pouvoir expliquer en quoi cela consiste.

EDIT: Après le commentaire d'Eric Postpischil, voici une version qui ne repose pas sur ASCII:

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

La sortie n’est pas aussi belle, et elle n’est toujours pas portable à 100% (elle va s’arrêter sur certains schémas de codage hypothétiques), mais elle devrait fonctionner sur EBCDIC.

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

Sortie: "

0
Digres

vous devriez utiliser le caractère d'échappement comme ceci: 

printf("\"");
0
kamal malhotra