Comment échapper au signe% en utilisant printf
en C?
printf("hello\%"); /* not like this */
Vous pouvez y échapper en publiant un double '%' comme ceci: %%
En utilisant votre exemple:
printf("hello%%");
Le signe '%' échappé n'est valable que pour printf. Si tu fais:
char a[5];
strcpy(a, "%%");
printf("This is a's value: %s\n", a);
Il imprimera: This is a's value: %%
Comme d'autres l'ont dit, %% échappera 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, imprimez-la toujours, toujours, toujours en utilisant
printf("%s", c)
pour empêcher un% incorporé de causer des problèmes [violations de mémoire, erreur de segmentation, etc.]
Avec lui-même ...
printf("hello%%"); /* like this */
Nitpick:
Vous n'échappez pas vraiment le %
dans la chaîne qui spécifie le format de la famille de fonctions printf()
(et scanf()
).
Le %
, dans la famille de fonctions printf()
(et scanf()
), lance une spécification de conversion. L'une des règles pour la spécification de conversion indique qu'un %
en tant que spécificateur de conversion (immédiatement après le %
qui a démarré la spécification de conversion) entraîne l'écriture d'un caractère '%'
sans argument converti.
La chaîne vraiment contient 2 caractères '%'
(contrairement aux caractères d'échappement: "a\bc"
est une chaîne contenant 3 caractères non nuls; "a%%b"
est une chaîne contenant 4 caractères non nuls).
utiliser un double %%
Comme ça:
printf("hello%%");
//-----------^^ inside printf, use two percent signs together
La barre oblique inverse en C est utilisée pour échapper des caractères dans des chaînes. Les chaînes ne reconnaîtront pas% comme un caractère spécial et aucune évasion ne sera donc nécessaire. Printf est une autre affaire: utilisez %% pour imprimer un%.
Oui, utilisez printf ("hello %%"); et c'est fait.
si vous utilisez un spécificateur de format incorrect, vous devez utiliser %%
pour imprimer %
. Votre code devrait être:
printf("hello%%");
En savoir plus tous les spécificateurs de format utilisés dans C .
Vous pouvez simplement utiliser %
deux fois, c'est-à-dire "%%"
Exemple:
printf("You gave me 12.3 %% of profit");
Vous pouvez utiliser %%:
printf("100%%");
Le résultat est:
100%
Le double '%' fonctionne également dans ".Format (…) . Exemple (avec iDrawApertureMask == 87, fCornerRadMask == 0.05): csCurrentLine.Format("\%ADD%2d%C,%6.4f*\%",iDrawApertureMask,fCornerRadMask) ;
gives la valeur souhaitée et attendue de (contenu de chaîne ) csCurrentLine; "% ADD87C, 0.0500 *%"