[C] Sortie formatée des entiers (%.3d par exemple)

Sortie formatée des entiers (%.3d par exemple) [C] - Programmation

Marsh Posté le 24-02-2002 à 14:41:04    

Supposons que j'ai une variable de type entier x=5
 
Comment obtenir "  5" au lieu de "005" ?
(En clair, pour remplacer les zéros par des espaces)
 
Ps : Je fais printf("%.3d", x);

 

[jfdsdjhfuetppo]--Message édité par _john_doe_--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 24-02-2002 à 14:41:04   

Reply

Marsh Posté le 24-02-2002 à 14:44:57    

Moi je ferais simplement: printf("%d", x);
 
Le .3 veut peut-être dire d'afficher 3 chiffres.

Reply

Marsh Posté le 24-02-2002 à 14:58:51    

je dirais %-3.3d

 

[jfdsdjhfuetppo]--Message édité par antp--[/jfdsdjhfuetppo]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 24-02-2002 à 15:48:38    

Merci, je vais essayer ça :)
 
 :hello:

Reply

Marsh Posté le 24-02-2002 à 16:16:25    

:-\
 
Ca marche pas, ça me fait exactement le même affichage...
 
HEEEEEEEEEEEEEEEEEEEEEEEEELP  :(

Reply

Marsh Posté le 24-02-2002 à 17:26:08    

même avec le - ?
et si tu mets juste %-3d ?
 

Citation :

% [flags] [width] [.prec] [F|N|h|l|L] type_char
width:
n = At least n characters are printed. If the output value has less than n characters, the output is padded with blanks (right-padded if - flag given, left-padded otherwise).
0n = At least n characters are printed. If the output value has less than n characters, it is filled on the left with zeros.

 

[jfdsdjhfuetppo]--Message édité par antp--[/jfdsdjhfuetppo]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 13-03-2002 à 19:38:59    

Alload a écrit a écrit :

Moi je ferais simplement: printf("%d", x);
 
Le .3 veut peut-être dire d'afficher 3 chiffres.  




Pareil !!!


---------------
[:procat]
Reply

Marsh Posté le 13-03-2002 à 22:31:41    

%3d devrait suffire le . est plus pour les flottants.

Reply

Marsh Posté le 13-03-2002 à 23:38:53    

bjone a écrit a écrit :

%3d devrait suffire le . est plus pour les flottants.  




 
la question de base était pour mettre des espaces plutot que des chiffres... %3 donnera 005 pour x = 5... d'où ma suggestion de mettre un - comme expliqué dans l'aide de Borland... mais je crois que l'auteur du topic l'a abandonné.
c'est procat qui a remonté un vieux topic.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 15-03-2002 à 11:19:51    

D'après mes habitudes (autodidactes), il faut mettre autant d'espaces avant le champ qu'on veut "  %d" fait qu'il y a toujours deux espaces avant les caractères.
Si on fait "%d%d", tout est collé, si c'est "%d    %d", y a 4 espaces entre champs numériques. On peut aussi "moduler" les % pour avoir ce qu'on veut. L'espace est pris comme un espace.
On peut aussi mettre "%d%s%d" avec, en regard de %s, une chaîne contenant le nombre d'espaces qu'on veut (ça évite de taper 25 espaces dans le champ : listings trop larges :D )....

Reply

Marsh Posté le 15-03-2002 à 11:19:51   

Reply

Marsh Posté le 15-03-2002 à 11:25:24    

si t'as un nombre à 2 chiffres ton "  %d" va afficher 2 espaces au lieu d'un :/
je vois pas pourquoi mon truc du - vous convient pas, c'est comme ça en C standard et chez moi ça marche


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 15-03-2002 à 11:58:06    

printf("%3d", num); ca marche ca... ca calle le nombre sur la droite...

Code :
  1. 1
  2.    2
  3. ...
  4.    9
  5.   10
  6. ...
  7. 100


 
si on avait %-3d ca callerai sur la droite et ca remplirai le reste par les espaces


---------------
Suri.morkitu.org : Balades au coeur de la ville...
Reply

Marsh Posté le 15-03-2002 à 13:52:28    

après test il semblerait que %3d fonctionne en effet (bizarre il me semblait qu'il mettait des 0 plutot que des espaces)
et le %-3d aligne a gauche, ce qui est très bizarre car ce n'est pas ce qui est décrit dans l'aide...
bon bhen je suis bien content de faire du Pascal plutôt que du C en temps normal :D

 

[jfdsdjhfuetppo]--Message édité par antp--[/jfdsdjhfuetppo]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 15-03-2002 à 14:21:03    

antp a écrit a écrit :

après test il semblerait que %3d fonctionne en effet (bizarre il me semblait qu'il mettait des 0 plutot que des espaces)
et le %-3d aligne a gauche, ce qui est très bizarre car ce n'est pas ce qui est décrit dans l'aide...




 
Bah, dans la MSDN ils le disent !

 

[jfdsdjhfuetppo]--Message édité par El_Gringo--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 15-03-2002 à 14:29:07    

ha non je me suis trompé, %3d c'est bien des espaces
et j'ai mal lu: right padded, et non pas right-aligned.
rhaaa ...
et puis quelle idée d'aller rechercher ce vieux topic aussi :/

 

[jfdsdjhfuetppo]--Message édité par antp--[/jfdsdjhfuetppo]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 17-03-2002 à 15:15:21    

Merci@tous.
 
:jap:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed