Bonjour à tous,
Retourner un tableau en paramètre d'une fonction c'est pas sorcier et pourtant... !!
Voila, j'ai un main principal où je lance:
Cette fonction exécute maFonction_A toutes les 100ms et prend en paramètre MesInfo qui est une structure.
Code : Sélectionner tout - Visualiser dans une fenêtre à part start_timer(Delta, (void*)maFonction_A, &MesInfo);
La Fonction_A fait elle appel à :
Maintenant j'ai besoin de récupérer le tableau obs dans maFonction_A mais pas moyen les valeur du tableau sont les bonnes dans la mafonction_B mais pas dans maFonction_A.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 void *maFonction_A(void * MesInfo) { maFonction_B(Disobs_Obs_File, &obs_string, obs, (s_thread*)MesInfo); }
-----------Mon Code----------
Voici ce que j'obtiens en sorti :
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 /*main function*/ int main( int argc, char *argv[]) { double delta = 100.0; s_thread MesInfo; start_timer(Delta, (void*)maFonction_A, &MesInfo); return 0; } /* maFonction_A function */ void *maFonction_A (void * MesInfo) { long obs[510]; FILE * Disobs_Obs_File = NULL; char obs_string; maFonction_B(Disobs_Obs_File, &obs_string, obs, (s_thread*)MesInfo); for (i = 0; i <((s_thread*)MesInfo)->obs_nbr; i++) { printf("OBS Removed [%d] = %ld\n", i, obs[i]); } return 0; } /* maFonction_B qui rempli un tableau obs[] */ void maFonction_B(FILE *Disobs_Obs_File, char *obs_string, long *obs, s_thread *MesInfo) { obs = malloc(510 * sizeof(long)); for (i=0; i<MesInfo->obs_nbr; i++) { obs[i] = /*fonction de recuperation d'un index de type long*/ printf("OBS Upload-> OBS[%d] = %ld\n", i, obs[i]); } }
Alors que je souhaite obtenir les mêmes valeurs pour obs[i] = OBS Removed[i]
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 /* obs[0] = : 77 obs[1] = : 78 obs[2] = : 79 obs[3] = : 80 obs[4] = : 81 obs[5] = : 82 obs[6] = : 83 obs[7] = : 84 obs[8] = : 85 obs[9] = : 86 obs[10] = : 87 obs[11] = : 88 obs[12] = : 89 OBS Removed [0] = 0 OBS Removed [1] = 0 OBS Removed [2] = 0 OBS Removed [3] = 0 OBS Removed [4] = 0 OBS Removed [5] = 0 OBS Removed [6] = 0 OBS Removed [7] = 0 OBS Removed [8] = 0 OBS Removed [9] = 0 OBS Removed [10] = 0 OBS Removed [11] = 0 OBS Removed [12] = 0 */
obs[1] = : 78
OBS Removed [1] = 0 et non pas "78" !!
Merci d'avance pour votre aide !
Partager