Problème de lecture dans un fichier texte.
Yop !
Toujours moi avec mes matrices :D
Ce coup-ci, j'ai un stuuut vraiment bizarroïde ...
Dans une fonction, je lis le contenu d'un fichier texte (c'est une matrice en fait) avec fgets.
Ce qui est troublant, c'est que dès qu'il lit une matrice qui fait plus de 10*10, il compte le nombre de ligne en double (variable cptligne dans le code).
Par compte, il me compte correctement le nombre d'éléments dans la matrice (variable compteur dans le code).
Donc, par ex :
Pour une matrice de 10*10 : il me compte bien 10 lignes et 100 éléments.
Pour une de 11*11 : il en compte 22 8O !! (mais par contre 121 éléments).
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
|
void lirefichier( char * chaine, int * * graphe, int * taille, int * testdefini )
{
int i, compteur = 0, cptligne = 0, cc = 0, cl = 0;
char * decoup, msg[16], s_chemin[29];
FILE * f;
sprintf( s_chemin, "C:\\Math\\Data\\%s", chaine );
f = fopen( s_chemin, "rt" );
if ( f == NULL )
{
printf( "\n!!! Nom de repertoire incorrect ou fichier inexistant !!!" );
waiting();
return;
}
else
{
while ( ( fgets( msg, sizeof( msg ), f ) ) != NULL )
{
decoup = NULL;
decoup = strtok( msg, "|" );
if ( decoup != NULL )
{
compteur++;
while ( ( decoup = strtok( NULL, "|" ) ) != NULL )
{
compteur++;
}
}
cptligne++;
}
fclose( f );
}
...
}; |
Voici un exemple de matrice de 11*11 :
Citation:
7|2|3|4|5|3|4|5|2|1|6
2|1|3|4|5|4|4|6|3|2|1
3|2|1|5|4|5|4|3|4|3|2
4|3|0|2|5|6|4|0|5|4|3
5|2|1|4|3|6|4|1|6|5|4
1|2|3|4|5|6|4|7|7|6|5
1|2|3|4|5|6|7|5|8|7|6
5|6|1|0|0|4|3|4|8|8|7
3|2|1|5|4|5|4|3|4|0|8
4|3|0|2|5|6|4|0|5|9|9
3|2|1|5|4|5|4|3|4|3|0
Si vous comprenez qqch à cette troublante affaire :?