Comment imprimer le signe de pourcentage (%) dans c

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

Le code est:

#include main() { printf("%"); getch(); } 

Votre problème est que vous devez changer:

 printf("%"); 

à

 printf("%%"); 

Ou vous pouvez utiliser du code ASCII et écrire:

 printf("%c", 37); 

🙂

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

de comp.lang.c FAQ list · Question 12.6 :

Il est difficile d’imprimer% des signes avec printf parce que% est essentiellement le caractère d’échappement de printf. À chaque fois que printf voit un%, il s’attend à ce qu’il soit suivi d’un personnage lui indiquant quoi faire. La séquence à deux caractères %% est définie pour imprimer un seul%.

Pour comprendre pourquoi \% ne peut pas fonctionner, rappelez-vous que la barre oblique inversée \ est le caractère d’échappement du compilateur et contrôle la façon dont le compilateur interprète les caractères du code source au moment de la compilation. Dans ce cas, cependant, nous voulons contrôler la façon dont printf interprète sa chaîne de format au moment de l’exécution. En ce qui concerne le compilateur, la séquence d’échappement \% n’est pas définie et donne probablement un seul caractère%. Il serait peu probable que le \ et le% accèdent à printf, même si printf était disposé à traiter le \ spécialement.

donc la raison pour laquelle on doit taper printf("%%"); imprimer un seul% est ce qui est défini dans la fonction printf. % est un caractère d’échappement de printf et \ du compilateur.

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 ‘ %% ‘.

Essayez d’imprimer de cette façon

 printf("%%");