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 :

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 file contient :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
 
r1 r2 r3
r2 r1
r3 r1
Le problem est que la valeur d'element dans le tableau change.
Le sortie de mon programme :
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
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
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]:
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 ..?

Excuse-moi, c'est assez longue comme message , et si vous comprenez mon probleme, je vraiment apprecier vos aide.

Merci,
moniphal