Question

Comment échapper-vous le signe% lors de l'utilisation printf en C?

printf("hello\%"); /* not like this */
Était-ce utile?

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]

S'il n'y a pas de formats dans la chaîne, vous pouvez utiliser puts (ou fputs ):

puts("hello%");

s'il y a un format dans la chaîne:

printf("%.2f%%", 53.2);

Comme indiqué dans les commentaires, puts un \n à Ajoute la sortie et fputs ne fonctionne pas.

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 *%"

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top