jijiz | Bonjour à tous et à toutes,
J'ai une structure contenant des informations :
Code :
- typedef struct {
- float t_pts_gauche[MAXPTS][2];
- float t_pts_droite[MAXPTS][2];
- int i_nb_pts_droite;
- int i_nb_pts_gauche;
- }structure_s;
|
dans une fonction je parcours un fichier texte pour chopper une variable se trouvant 117 caractères plus loin que le début du fichier et je sauve la valeur dans la structure :
Code :
- // On se place sur la ligne contenant le nombre de points presents pour la camera gauche
- fseek(fic, 177, SEEK_SET);
- fscanf(fic," %i",&my_struct->i_nb_pts_gauche);
|
j'avance dans le fichier pour aller récuperer des tableaux de points :
Code :
- // On se place sur la premiere coordonnee de la grille gauche
- fseek(fic, 282, SEEK_SET);
- printf("Nbre pts : %d \n", my_struct->i_nb_pts_gauche);
|
et je parcours le fichier en sauvegardant les coordonnées des points :
Code :
- // Lecture et stockage des coordonnees de la grille gauche
- for(i = 0; i < my_struct->i_nb_pts_gauche; i++)
- {
- printf("i : %d, nbpts : %d\n", i,my_struct->i_nb_pts_gauche );
- fscanf(fic," %f %f %f %f %f",
- &poubelle1,
- &poubelle2,
- &poubelle3,
- &my_struct->t_pts_gauche[0],
- &my_struct->t_pts_gauche[i][1]);
- }
|
Ce que je ne comprends pas est :
Si j'affiche ma variable avant la boucle :
Code :
- printf("Nbre pts : %d \n", my_struct->i_nb_pts_gauche);
|
elle contient la valeur 317 (normal)
Sauf que si j'utilise cette même variable pour servir de borne à la fonction for, je n'ai plus du tout 317 mais 1144542659. On dirait une adresse, ce qui est vraiment étrange est que je ne modifie pas la variable [i]my_struct->i_nb_pts_gauche pourtant elle se trouve modifée.
Merci beaucoup de votre lanterne.
Ju.
Code :
- Le code contigu :
- void get_points(char *fichier, structure_s *my_struct)
- {
- int i;
- int j;
- int k;
- int i_nb_pts_gauche;
- int i_nb_pts_droite;
- float poubelle1;
- float poubelle2;
- float poubelle3;
- i_nb_pts_gauche = 0;
- i_nb_pts_droite = 0;
- i = 0;
- FILE *fic = fopen(fichier, "rt" );
- if (fic)
- {
- // On se place sur la ligne contenant le nombre de points presents pour la camera gauche
- fseek(fic, 177, SEEK_SET);
- fscanf(fic," %i",&my_struct->i_nb_pts_gauche);
- //my_struct->i_nb_pts_gauche = i_nb_pts_gauche;
- // On se place sur la premiere coordonnee de la grille gauche
- fseek(fic, 282, SEEK_SET);
- printf("Nbre pts : %d \n", my_struct->i_nb_pts_gauche);
- // Lecture et stockage des coordonnees de la grille gauche
- for(i = 0; i < my_struct->i_nb_pts_gauche; i++)
- {
- printf("i : %d, nbpts : %d\n", i,my_struct->i_nb_pts_gauche );
- fscanf(fic," %f %f %f %f %f",
- &poubelle1,
- &poubelle2,
- &poubelle3,
- &my_struct->t_pts_gauche[i][0],
- &my_struct->t_pts_gauche[i][1]);
- }
|
Message édité par jijiz le 30-04-2008 à 09:33:16
|