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.    |