web-dev-qa-db-fra.com

Comment faire afficher les nombres en deux chiffres en C?

Pour la programmation C. Comment puis-je obtenir des nombres à afficher comme 00, 01, 02, 03, au lieu de 0, 1, 2, 3. J'ai juste besoin de 0 avant le nombre jusqu'à 10.

je sais que lorsque vous faites des décimales, vous pouvez faire "% .2f" etc. mais qu'en est-il en sens inverse pour les entiers?

voici ce que j'utilise ... **

printf("Please enter the hours: ");
    scanf ("%d",&hour);
printf("Please enter the minutes: ");
    scanf ("%d",&minute);
printf("Please enter the seconds: ");
    scanf ("%d",&second);
printf("%d : %d : %d\n", hour, minute, second);

}

J'ai besoin que les chiffres s'affichent comme 00: 00: 00

??

38
Adeel Anwar

Vous devez utiliser %02d si vous voulez que les zéros non significatifs soient remplis sur deux espaces:

printf ("%02d : %02d : %02d\n", hour, minute, second);

Voir par exemple le programme complet suivant:

#include <stdio.h>
int main (void) {
    int hh = 3, mm = 1, ss = 4, dd = 159;
    printf ("Time is %02d:%02d:%02d.%06d\n", hh, mm, ss, dd);
    return 0;
}

qui génère:

Time is 03:01:04.000159

Gardez à l'esprit que le %02d signifie deux caractères minimum largeur pour qu'il produise 123 as123. Cela ne devrait pas être un problème si vos valeurs sont des heures, minutes et secondes valides, mais cela vaut la peine de garder à l'esprit car de nombreux codeurs inexpérimentés semblent faire l'erreur que 2 est en quelque sorte la longueur minimale et maximale.

54
paxdiablo

Utilisez le format: %02d au lieu. Le 0 signifie remplir le champ en utilisant des zéros et le 2 signifie que le champ a une largeur de deux caractères. Par conséquent, pour tous les nombres qui prennent moins de 2 caractères à afficher, il sera complété par un 0.

34
dreamlax