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 :
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 // 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; }
Je n'arrive pas à comprendre pour quelle raison cela ne fonctionne pas ...
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; }
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 ^^
Partager