Retourner un tableau en paramètre d'une fonction
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:
Code:
start_timer(Delta, (void*)maFonction_A, &MesInfo);
Cette fonction exécute maFonction_A toutes les 100ms et prend en paramètre MesInfo qui est une structure.
La Fonction_A fait elle appel à :
Code:
1 2 3 4
| void *maFonction_A(void * MesInfo)
{
maFonction_B(Disobs_Obs_File, &obs_string, obs, (s_thread*)MesInfo);
} |
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.
-----------Mon Code----------
Code:
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]);
}
} |
Voici ce que j'obtiens en sorti :
Code:
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
*/ |
Alors que je souhaite obtenir les mêmes valeurs pour obs[i] = OBS Removed[i]
obs[1] = : 78
OBS Removed [1] = 0 et non pas "78" !!
Merci d'avance pour votre aide !