Mettre les lignes d'un fichier dans un tableau
je cherche à lire sur stdin toutes les lignes d'une fichier et de les stocker dans un tableaux.
J'ai fait ça mais ça a pas l'air de marcher très bien!
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
|
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define NMAXLINE 100
#define NMAXCHAR 100
int main()
{
char row[NMAXCHAR];
char* lines[NMAXLINE];
char* test;
int nbLine=0,i;
test=fgets(row,NMAXLINE,stdin);
/*Stockage des lignes*/
while(test!=NULL)
{
lines[nbLine]=row;
test=fgets(row,NMAXLINE,stdin);
nbLine++;
}
/*Affichage des lignes stockées*/
for(i=0;i<nbLine;i++)
{
fprintf(stdout,lines[i]);
printf("\n");
}
return EXIT_SUCCESS;
} |
Q'en pensez vous ?
Rod
Re: Mettre les lignes d'un fichier dans un tableau
Citation:
Envoyé par rod59
je cherche à lire sur stdin toutes les lignes d'une fichier et de les stocker dans un tableaux.
J'ai fait ça mais ça a pas l'air de marcher très bien!
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
|
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define NMAXLINE 100
#define NMAXCHAR 100
int main()
{
char row[NMAXCHAR];
char* lines[NMAXLINE];
char* test;
int nbLine=0,i;
test=fgets(row,NMAXLINE,stdin);
/*Stockage des lignes*/
while(test!=NULL)
{
lines[nbLine]=row;
test=fgets(row,NMAXLINE,stdin);
nbLine++;
}
/*Affichage des lignes stockées*/
for(i=0;i<nbLine;i++)
{
fprintf(stdout,lines[i]);
printf("\n");
}
return EXIT_SUCCESS;
} |
Q'en pensez vous ?
Rod
Il n'y a pas création spontanée de memoire ... Si chaque ligne doit être stockée séparément, il faut de l'espace pour chaque ligne. Ici, tu te contentes de remplir un tableau de pointeurs avec l'adresse du même tableau. D'autre part, avec *printf(), il faut utiliser une formateur "%s" lorsque la variable chaine n'est pas explicite. On ne sais pas ce qu'il peut y avoir dedans...
Code:
fprintf(stdout,"%s"lines[i]);
et forcer la sortie si on est pas sûr qu'il y a un '\n' dans la chaine...