Comment puis-je imprimer le signe pourcentage (%) en c [dupliquer]

Cette question a déjà une réponse ici:

Je suis un débutant en C, et je me demandais pourquoi ce programme n'imprime pas le signe%?

Le code est:

#include<stdio.h>

main()
{
     printf("%");
     getch();
}
24
demandé sur Paul Filch 2013-07-21 21:12:27

4 réponses

Votre problème est que vous devez changer:

printf("%"); 

À

printf("%%");

Ou vous pouvez utiliser du code ASCII et écrire:

printf("%c", 37);

:)

52
répondu C_Intermediate_Learner 2013-07-21 18:08:57

Il n'y a aucune explication dans cette rubrique pourquoi pour imprimer un signe de pourcentage, il faut taper %% et non par exemple un caractère d'échappement avec percentage - \%.

de comp.lang.C FAQ liste * Question 12.6 :

La raison pour laquelle il est difficile d'imprimer des signes % avec printf est que % est essentiellement le caractère d'échappement de printf. Chaque fois que printf voit un%, il s'attend à ce qu'il soit suivi par un personnage lui disant quoi faire ensuite. La séquence de deux caractères %% est définie pour imprimer single %.

Pour comprendre pourquoi \% ne peut pas fonctionner, rappelez-vous que la barre oblique inverse \ est caractère d'échappement du compilateur et contrôle l'interprétation du compilateur caractères du code source au moment de la compilation. Dans ce cas, cependant, nous voulons pour contrôler comment printf interprète sa chaîne de format au moment de l'exécution. Autant en ce qui concerne le compilateur, la séquence d'échappement \% n'est pas définie, et il en résulte probablement un seul caractère%. Il serait peu probable que le \ et le % à le faire à travers à printf, même si printf était prêt à traiter le \ spécialement.

Donc, la raison pour laquelle il faut taper printf("%%"); pour imprimer un seul % est que c'est ce qui est défini dans la fonction printf. % est un caractère d'échappement de printf, et \ du compilateur.

12
répondu macfij 2014-08-10 07:48:01

Utilisez "%%". La page de manuel décrit cette exigence:

% Un '%' est écrit. Aucun argument n'est converti. La spécification de conversion complète est ' %%'.

7
répondu Carl Norum 2013-07-21 17:13:37

Essayez d'imprimer de cette façon

printf("%%");
0
répondu Santhosh Pai 2013-07-21 17:52:34