web-dev-qa-db-fra.com

Comment imprimer le signe de pourcentage (%) en c

Je suis 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();
}
28
Paul Filch

Votre problème est que vous devez changer:

printf("%"); 

à

printf("%%");

Ou vous pouvez utiliser le code ASCII et écrire:

printf("%c", 37);

:)

63

il n'y a aucune explication dans cette rubrique pourquoi imprimer un signe de pourcentage, il faut taper %% et non par exemple un 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.

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

15
macfij

Utilisation "%%". Le page de manuel décrit cette exigence:

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

7
Carl Norum

Essayez d'imprimer de cette façon

printf("%%");
1
Santhosh Pai