Bonjour, une petite question relative à un écrasement et je n'arrive pas à trouver d'où cela vient.
J'essaie d'imprimer exactement un entier sur 4 caractères, cela semble fonctionner mais le champ qui suit dans la structure se retrouve écrasé.
Et dans le résultat de sortie, on constate que le champ utilisateur est écrasé :-(
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 #include <stdio.h> #include <string.h> struct s { char code[4]; char utilisateur[12]; } s; main(int argc, char **argv) { int val=3456; memset(s.utilisateur, ' ', sizeof(s.utilisateur)); (void)strcpy(s.utilisateur, "123456"); (void)printf("before %s\n", s.utilisateur); sprintf(s.code, "%4.4d\n", val); printf("after %s\n", s.utilisateur); printf("after %x\n", s.utilisateur[0]); printf("after %x\n", s.utilisateur[1]); printf("after %x\n", s.utilisateur[2]); }
Je soupçonne fortement le sprintf de s'être un peu étalé mais quelle est la bonne syntaxe ?before 123456
after
after a
after 0
after 33
Merci de vos lumières.
Partager