1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| #include <stdio.h>
#include <string.h>
static const size_t cTAILLE_BUFFER = 10;
static const size_t cNB_MINIMAL_DE_CHIFFRES = 3;
int main(void) {
// Avec %03d, (sn)printf écrit au moins 3 chiffres et ajoute si besoin des '0' à gauche :
const int entier = 11;
{
// Écriture dans la sortie standard
printf("%03d\n", entier);
// Écriture dans un buffer
char buffer[cTAILLE_BUFFER];
snprintf(buffer, cTAILLE_BUFFER, "%03d", entier);
// test
printf("%s\n", buffer);
}
// Avec une chaîne, la seule méthode que je connais est d'ajouter les '0' soi-même :
const char chaine[3] = "11";
const size_t longueur_chaine = strlen(chaine);
{
// Écriture dans la sortie standard
for(size_t k = longueur_chaine; k < cNB_MINIMAL_DE_CHIFFRES; ++k)
printf("0");
printf("%s\n", chaine);
// Écriture dans un buffer
char buffer[cTAILLE_BUFFER];
char* bufferPtr = buffer;
for(
size_t k = longueur_chaine;
k < cNB_MINIMAL_DE_CHIFFRES && bufferPtr+1 < buffer+cTAILLE_BUFFER;
++k, ++bufferPtr)
{
*bufferPtr = '0';
}
const size_t nb_zeros_ecrits = bufferPtr - buffer;
snprintf(bufferPtr, cTAILLE_BUFFER-nb_zeros_ecrits, "%s", chaine);
// test
printf("%s\n", buffer);
}
return 0;
} |
Partager