Nii | Bonjour.
Je recherche une explication au comportement d'un code.
Code :
- #include <stdio.h>
- #include <string.h>
- #include <unistd.h>
- struct data {
- char var1[6];
- char var2[2];
- char var3[12];
- char var4[8];
- };
- void fct(char *buf, int size) {
- int x=0;
- while (x<size) {buf[x] = x+65; x++;}
- buf[size] = '\0';
- }
- void snd(struct data* dt) {
- fct(dt->var1,sizeof(dt->var1));
- printf("Strncpy struct var1 = %s = %d\n",dt->var1,sizeof(dt->var1));
-
- fct(dt->var2,sizeof(dt->var2));
- printf("Strncpy struct var2 = %s = %d\n",dt->var2,sizeof(dt->var2));
-
- fct(dt->var3,sizeof(dt->var3));
- printf("Strncpy struct var3 = %s = %d\n",dt->var3,sizeof(dt->var3));
-
- fct(dt->var4,sizeof(dt->var4));
- printf("Strncpy struct var4 = %s = %d\n",dt->var4,sizeof(dt->var4));
-
- printf("var1 = %s\nvar2 = %s\nvar3 = %s\nvar4 = %s\n",dt->var1,dt->var2,dt->var3,dt->var4);
- }
- int main() {
- struct data mydata;
- while (1) {
- snd(&mydata);
- printf("\n" );
- sleep(1);
- }
-
- return 0;
- }
|
L'affichage de mes variables est :
Code :
- Strncpy struct var1 = ABCDEF = 6
- Strncpy struct var2 = AB = 2
- Strncpy struct var3 = ABCDEFGHIJKL = 12
- Strncpy struct var4 = ABCDEFGH = 8
- var1 = ABCDEFABABCDEFGHIJKLABCDEFGH
- var2 = ABABCDEFGHIJKLABCDEFGH
- var3 = ABCDEFGHIJKLABCDEFGH
- var4 = ABCDEFGH
|
Je ne comprends pas pourquoi lors du dernier printf, mes données sont erronées et se "superposent".
Si quelqu'un pouvait me dire l'erreur que je fais. Merci. |