[C] Probleme avec le tableaux de 2 dimension
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:
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:
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:
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:
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