Salut a tous,
J'ai code une tres petite application en C, mon programme va lire chaque ligne(une chaine de caractere) d'un fichier et la divise en token separant par espace et remplie dans un tableau.
Lorsque j'affiche tous les elements dans le tableau, il ne donne de resultat incorrecte.
Mon code :
Le file contient :
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 int readNetTopology(char* filename, char** neighborTable) { int i = 0, j = 0, n = 0; char* buf; int bufSize = 100; char* router; FILE *fdes_ = NULL; if ( (fdes_ = fopen(filename, "r")) == NULL){ perror("Read file "); exit(0); } else{ buf = (char *) malloc(100); router = (char *) malloc(5); /* lire chaque ligne */ while( fgets(buf, bufSize, fdes_) != NULL){ j = 0; // prendre 1er token router = (char *) strtok(buf, " "); strcpy(*(neighborTable+i+j),router); printf(">> element[%d][%d] : %s \n", i, j, *(neighborTable+i+j)); j++; /* prendre autres tokens */ while ((router = (char *) strtok(NULL, " ")) != NULL ){ strcpy(*(neighborTable+i+j),router); printf(">> element[%d][%d] : %s \n", i, j, *(neighborTable+i+j)); j++; } i++; } // imprimer tous les elements dans le tableau for (n=0; n<i; n++){ j=0; do { printf("Element[%d][%d] : %s \n", n, j, *(neighborTable+n+j)); j++; }while(neighborTable[n][j] != '\0');*/ } fclose(fdes_); } return i; // nombre de routeurs }
Le problem est que la valeur d'element dans le tableau change.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 r1 r2 r3 r2 r1 r3 r1
Le sortie de mon programme :
Cette affichage est correcte, .. mais avec la boucle d'afiichage apres cela, ia sortie est incorrecte :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 >> element[0][0] : r1 >> element[0][1] : r2 >> element[0][2] : r3 >> element[1][0] : r2 >> element[1][1] : r1 >> element[2][0] : r3 >> element[2][1] : r1
Je sais qu'il y a des fautes quelque pas dans mon programme mais je ne le trouve pas. Oubien j'ai mal utilise le tableau de 2 dimension ..?
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 Element[0][0]: r1 Element[0][1]: r2 Element[0][2]: r3 Element[0][3]: r1 Element[1][0]: r2 Element[1][1]: r3 Element[1][2]: r1 Element[1][3]: Element[2][0]: r3 Element[2][1]: r1 Element[2][2]: Element[2][3]: Element[3][0]: r1 Element[3][1]: Element[3][2]: Element[3][3]:
Excuse-moi, c'est assez longue comme message , et si vous comprenez mon probleme, je vraiment apprecier vos aide.
Merci,
moniphal
Partager