Comment afficher l'heure en C ?? :) - Programmation
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
Marsh Posté le 25-04-2001 à 00:25:22
printf("%2d:%2d:%2d",heure,minute,seconde);
Marsh Posté le 25-04-2001 à 00:58:41
Voire
Code :
|
si tu veux mettre des zéros devant les nombres à 1 chiffre (exemple "02" au lieu de " 2" ).
[edit]--Message édité par BifaceMcLeOD--[/edit]
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]
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+,
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