J'essaie de récupérer certaines informations depuis un fichier, ligne par ligne. Le traitement dépend du premier caractère de la ligne.
J'ai des lignes de la forme "lettre double double double" que je dois traiter.
J'ai essayé pas mal de choses mais je suis toujours coincée.
Je ne récupère que des double égaux à 0 (ce qui veut dire que la transformation atof ne s'est pas bien passée).
Voici mon code :
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 char *file = AG_STRING(1); FILE *f ; char line[LINE_MAX] ; char tabtmp[10] ; double sommets[MAXSIZE][3] ; int i = 0, j = 0, k = 0, nbSommets = 0 ; if ((f = fopen(file, "r")) != NULL) { while (fgets(line, LINE_MAX, f) != NULL) { i = 0 ; if (line[i] == '#') { skipLine(f) ; } else if (line[i] == 'v') { i = 1 ; for (k=0 ; k<3 ; k++) { j = 0 ; while (&line[i] != " ") { i++ ; } // on avance while (&line[i] != " ") { // on copie tabtmp[j] = line[i] ; i++ ; j++ ; } tabtmp[j] = '\0' ; // fin de chaine sommets[nbSommets][k] = atof(tabtmp) ; // conversion tabtmp[0] = '\0' ; // chaine vide nbSommets++ ; } } } fclose(f) ; }
Je voudrais un conseil pour m'aider à avancer ou bien une toute nouvelle piste si celle que j'ai suivie n'est pas la bonne.
J'ai essayé pas mal de choses (fscanf et autres) mais je n'arrive à rien!
Merci !
Partager