Comment afficher l'heure en C ?? :)

Comment afficher l'heure en C ?? :) - Programmation

Marsh Posté le 25-04-2001 à 00:03:35    

Ca peut paraitre con mais j'arrive pas à faire un truc:
 
Quand je fait un  
printf("%d:%d:%d",heure,minute,seconde);
 
Ca m'affiche ça:
1:6:40 au lieu de 01:06:40
 
Comment forcer printf à afficher 2 caractères par nombre, même pour les nombres inférieurs à 10 et donc afficher 01 au lieu de 1 par exemple.
 
Merci

Reply

Marsh Posté le 25-04-2001 à 00:03:35   

Reply

Marsh Posté le 25-04-2001 à 00:15:27    

ess

Reply

Marsh Posté le 25-04-2001 à 00:16:11    

essaye  
printf("%2d:%2d:%2d",heure,minute,seconde);  
 
ou
 
printf("%d2:%d2:%d2",heure,minute,seconde);  
 
m'en rappelle plus

Reply

Marsh Posté le 25-04-2001 à 00:25:22    

printf("%2d:%2d:%2d",heure,minute,seconde);


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 25-04-2001 à 00:58:41    

Voire

Code :
  1. printf("%02d:%02d:%02d", heure, minute, seconde);

si tu veux mettre des zéros devant les nombres à 1 chiffre (exemple "02" au lieu de " 2" ).

 

[edit]--Message édité par BifaceMcLeOD--[/edit]

Reply

Marsh Posté le 25-04-2001 à 01:20:22    

Merci Beaucoup

Reply

Marsh Posté le 25-04-2001 à 03:26:51    

Oui, j'ai tape un peu trop vite, presse par une reeunion qui demarrait.
Ce genre de formattage est assez bien documente dans l'indispensable "C traps and pitfalls" de Koenig, qui figure en bonne place sur le bureau de tout programmeur C.
Ce qu'il faut savoir:
%nd ==> comme %d mais avec au plus n chiffres (n est appele la largeur [width])
%.md ==> comme %d mais avec au moins m chiffres (eventuellement avec du padding par 0) (m est appele la precision)
%n.md (ou n>=m) comme %d mais avec au moins m chiffres et au plus n
(pour des formats autres que %d, largeur et precision peuvent avoir des effets differents: par exemple, avec un %f la precision indique le nombre de chiffres apres la virgule, avec %g, c'est le nombre de chiffres signicatifs...)
Donc dans le cas present,  
printf("%.2d:%.2d:%.2d",heure,minute,seconde);  
(ou  eventuellement printf("%2.2d:%2.2d:%2.2d",heure,minute,seconde); ) est la bonne reponse.
Biface,  
printf("%02d:%02d:%02d",heure,minute,seconde);  est acceptable, mais il repose sur le flag 0 qui est "deprecated" depuis plus de 10 ans. A priori, les valeurs de flag recommendees sont: SPACE - + #. La recommendation est d'utiliser la precision plutot que le flag 0.
 
A+,

 

[edit]--Message édité par gilou--[/edit]


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 26-04-2001 à 01:49:27    

Je viens d'ailleurs de lire dans la doc VC++ que le flag 0 couple au format %d est sans effet. Pour une fois que chez Bilou, ils suivent les recommendations d'un standard...
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Sujets relatifs:

Leave a Replay

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