Comment échapper à la% (pour cent) signe dans printf de C?
-
13-09-2019 - |
Question
Comment échapper-vous le signe% lors de l'utilisation printf
en C?
printf("hello\%"); /* not like this */
La solution
Vous pouvez y échapper en affichant un double '%' comme ceci: %%
En utilisant votre exemple:
printf("hello%%");
Échapper signe '%' est seulement pour printf. Si vous faites:
char a[5];
strcpy(a, "%%");
printf("This is a's value: %s\n", a);
Il imprimera: This is a's value: %%
Autres conseils
Comme d'autres l'ont dit, %% échapperont au%.
Notez, cependant, que vous ne devriez jamais faire ceci:
char c[100];
char *c2;
...
printf(c); /* OR */
printf(c2);
Chaque fois que vous devez imprimer une chaîne, toujours, toujours, toujours imprimer à l'aide de
printf("%s", c)
pour éviter un% intégré de causer des problèmes [des violations de mémoire, segfault, etc]
Avec lui-même ...
printf("hello%%"); /* like this */
pinailler:
Vous n'échappez pas vraiment le %
dans la chaîne qui spécifie le format pour la famille printf()
(et scanf()
) des fonctions.
Le %
, dans la famille printf()
(et scanf()
) des fonctions, commence une spécification de conversion. L'une des règles de spécification de conversion indique qu'un %
en tant que prescripteur de conversion (immédiatement après la %
qui a commencé la spécification de conversion) provoque un caractère '%'
à écrire sans argument converti.
La chaîne vraiment a 2 caractères '%'
à l'intérieur (par opposition à des caractères échapper: "a\bc"
est une chaîne de 3 caractères non nuls; "a%%b"
est une chaîne de 4 caractères non nuls).
utiliser un double %%
Comme ceci:
printf("hello%%");
//-----------^^ inside printf, use two percent signs together
La barre oblique inverse en C est utilisé pour échapper les caractères dans les chaînes. Les chaînes ne reconnaissent% comme un caractère spécial, et donc pas d'échappatoire seraient nécessaires. Printf est une autre question:. Utiliser %% pour imprimer un%
Eh oui, l'utilisation printf ( "bonjour %%"); et il est fait.
Vous pouvez simplement utiliser %
deux fois, c'est "%%"
Exemple:
printf("You gave me 12.3 %% of profit");
Vous pouvez utiliser %%:
printf("100%%");
Le résultat est:
100%
vous utilisez spécificateur de format incorrect, vous devez utiliser %%
pour l'impression %
. Votre code doit être:
printf("hello%%");
En savoir plus tous spécificateurs utilisé dans C.
Le double '%' fonctionne aussi dans » .Format (...).
Exemple (avec iDrawApertureMask == 87, fCornerRadMask == 0,05):
csCurrentLine.Format("\%ADD%2d%C,%6.4f*\%",iDrawApertureMask,fCornerRadMask) ;
donne la valeur souhaitée et attendue du contenu de la chaîne (en) csCurrentLine;
"% ADD87C, 0,0500 *%"