Bonjour j'ai des petit problème pour extirper les informations d'une mémoire que j'ai alloué et remplie de donnée ...

Voici ma fonction qui alloue et rempli ma memoire :
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
// int | double | unsigned char| 15 char ...
void * createTrou(){
    unsigned int nbBytes = sizeof(int) +sizeof(double) + sizeof(unsigned char)+ 15*sizeof(char);
    char * pt = malloc(nbBytes);
    int cpt = 0; // permettra le decalage de mon pointeur
 
    *(pt+cpt) = 9;
    cpt +=sizeof(int);
 
    *(pt+cpt) = 5.1;
    cpt += sizeof(double);
 
    *(pt+cpt) = 15;
    cpt+= sizeof(unsigned char);
 
    for(int j = 0;j<15;j++){
        *(pt+cpt+j) = 61+j;
    }
    return pt;
}
et ceci me permet de parcourir pour afficher :
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
22
23
24
25
26
27
28
unsigned int affichParcours(void * pt, unsigned decalage){
    int k = 0,cpt = 0;
    double d = 0;
    unsigned char c = 0;
    char tmp = 0;
    char * p = pt;
 
    k = *(p+decalage+cpt);
    cpt += sizeof(int);
 
    d = *(p+decalage+cpt);
    cpt += sizeof(double);
 
    c = *(p+decalage+cpt);
    cpt += sizeof(unsigned char);
 
    printf("%d | %d | %c | "),k,d,c;
 
    for(int i = 0;i<15;i++){
        tmp = *(p+decalage+cpt+i);
        cpt += sizeof(char);
 
        printf("%c |",tmp);
    }
 
    printf("\n");
    return cpt;
}
Je n'arrive pas à comprendre pour quelle raison cela ne fonctionne pas ...

Note : dans la fonction unsigned int affichParcours(void * pt, unsigned decalage);
- le decalage est mit a 0 pour le 1er appel, cette fonction retourne le decalage fait apres avoir afficher tout ce qu'il falait.
- le void* pt est l'adresse de ma zone memoire alloue et remplit par ma fonction void * createTrou()

Merci pour les futur aide, conseil et corrections ^^