Bonjour,
Je sollicite votre aide concernant un problème avec des pointeurs sur des tableaux de structures imbriquées.
Pour mon petit développement, j'ai besoin utilisé contenant des tableaux de données dont je ne connais pas la taille (car définit par l'utilisateur).
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91 #include "stdafx.h" //Includes system #include <stdarg.h> #include <stdio.h> #include <stdlib.h> #include <ctype.h> #include <string.h> //Declaration de type typedef struct SubData_t { double* nb_array; }SubData; typedef struct Data_t { SubData* sub_array; }Data; void subadd(SubData* p_sub) { int i,n=3; p_sub->nb_array = (double*)calloc(3, sizeof(double)); for (i = 0; i < n; i++) { p_sub->nb_array[i] = (double)i; } } void add(Data* p_data) { int i, n = 3; p_data->sub_array = (SubData*)calloc(3, sizeof(SubData)); for (i = 0; i < n; i++) { subadd(&p_data->sub_array[i]); } } int main() { int i,j,k,n = 2,size,size_1,size_2; Data* array; int a, b; //Data temp; array = (Data*)calloc(n, sizeof(Data)); for (i = 0; i < n; i++) { add(&array[i]); } a = sizeof(array); b = sizeof(Data); size = sizeof(arr) / sizeof(Data); for (i = 0; i < size; i++) { printf("Arr [%d] \n", i); size_1 = sizeof(array[i].sub_array) / sizeof(SubData); for (j = 0; j < size_1; j++) { printf("\tSubarr [%d] \n", j); size_2 = sizeof(array[i].sub_array[j].nb_array) / sizeof(double); for (k = 0; k < size_2; k++) { printf("\t\tnb_arr [%d] = %f \n", k, array[i].sub_array[j].nb_arr[k]); } } } return 0; }
Pour faire des essais, j'ai écris le code suivant très simplifié et la je rencontre de gros problèmes :
Les tailles des tableaux, ici, sont fixes pour l'exemple. En réalité, elles seront dynamiques (réallocations de mémoire), je commence simplement déjà.
toutes les valeurs de size, size_1, size_2 représentant le nombre d'éléments de mes tableaux sont erronés.
exemple : size = 0, a = 4 et b=8, alors que size devrait être égale à 2 puisque je mets 2 éléments dans mon tableau. 4/8 = 0.5 -> comme c'est un entier donc 0.
Mais pourquoi a = 4 et non pas 16 car sizeof(Data) = 8, 2 éléments x 8 =16.
Je ne comprends pas ce qui se passe. Et je me demande même si c'est bien la bonne manière de coder mon problème ? Est ce que je fais une/des erreurs de programmations.
J’espère que quelqu'un aura la gentillesse de m'expliquer mon problème et surtout a cote de quoi je passe et si possible de donner un exemple de code.
Cela fait 3 jours que je le casse la tête dessus.
Je vous remercie d'avance de votre aide.
Tof19100
Partager