Comment échapper au signe% (percent) de C’s printf?

Comment échappez-vous au signe% lorsque vous utilisez printf en C?

 printf("hello\%"); /* not like this */ 

Vous pouvez y échapper en publiant un double ‘%’ comme ceci: %%

En utilisant votre exemple:

 printf("hello%%"); 

Echappement au signe ‘%’ est uniquement pour printf. Si tu fais:

 char a[5]; strcpy(a, "%%"); printf("This is a's value: %s\n", a); 

Il va imprimer: This is a's value: %%

Comme d’autres l’ont dit, %% échappera au%.

Notez toutefois que vous ne devez jamais faire ceci:

 char c[100]; char *c2; ... printf(c); /* OR */ printf(c2); 

Chaque fois que vous devez imprimer une chaîne, toujours, toujours, imprimez-la toujours avec

 printf("%s", c) 

pour empêcher un% incorporé de causer des problèmes [violations de mémoire, erreur de segmentation, etc.]

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

 puts("hello%"); 

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

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

Comme indiqué dans les commentaires, puts ajoute un \n à la sortie et fputs ne le fait pas.

Avec lui-même …

 printf("hello%%"); /* like this */ 

Nitpick:
Vous n’échappez pas vraiment au % 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 stipule qu’un % tant que spécificateur de conversion (immédiatement après le % qui a démarré la spécification de conversion) provoque l’écriture d’un caractère '%' sans argument converti.

La chaîne a vraiment 2 caractères '%' (contrairement aux caractères qui s’échappent: "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 ça:

 printf("hello%%"); //-----------^^ inside printf, use two percent signs together 

La barre oblique inverse dans C est utilisée pour échapper des caractères dans les chaînes. Les chaînes ne reconnaîtront pas% comme un caractère spécial et, par conséquent, aucune évasion ne serait nécessaire. Printf est une autre affaire: utilisez %% pour imprimer un%.

Oui, utilisez printf (“hello %%”); et c’est fait.

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%

vous utilisez un spécificateur de format incorrect que vous devez utiliser %% pour imprimer % . Votre code devrait être:

 printf("hello%%"); 

Lisez plus tous les spécificateurs de format utilisés dans C.

Le double ‘%’ fonctionne également 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 de (contenu de la chaîne dans) csCurrentLine; “% ADD87C, 0.0500 *%”

Utilisez ceci:

 #include  printf("hello%s%s"); 

Une liste complète des spécificateurs de format utilisés avec printf peut être trouvée ici:

http://www.mekong.net/tech/printf.htm