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?
Essaye ça:
#include <stdio.h>
int main()
{
printf("Printing quotation mark \" ");
}
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.
Vous devez échapper au guillemet:
printf("\"");
\
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
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", '"', '"');
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.
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.
#include<stdio.h>
int main(){
char ch='"';
printf("%c",ch);
return 0;
}
Sortie: "
vous devriez utiliser le caractère d'échappement comme ceci:
printf("\"");