|
|
|
|
Bonjour,
j'aimerai lire un fichier txt ligne par ligne. Le but serai de commencer la lecture lorque la ligne commencera par "<TD NOWRAP align".
J'ai essayé de faire quelque trucs mais vu que j'ai essayé avec le fscanf et une chaine, au 1er espace on change de chaine.
Voici un bout de mon code :
int i,j,nb=0;
int etatlecture;
char nom[100];
FILE*fichier=NULL;
fichier=fopen("palmares[1].txt","r");
if (fichier!=NULL)
{
etatlecture=fscanf(fichier,"%s",nom);
while (strncmp("<TD NOWRAP align",nom,2)!=0)
{
etatlecture=fscanf(fichier,"%s",nom);
}
// d'autres instructions....
}
Quand je compile pas d'erreurs mais j'obtient des chaines qui ne sont pas les lignes des mots.
J'avais déja essayé avec un fgets et des fseek pour changer de lignes mais vu que les lignes n'ont pas toutes la meme taille, c'est difficile.
Help please !!!
Merci.
Bonjour,
|
Ou alors je veins de penser a un truc :
|
En effet, si le buffer donné est trop petit pour contenir la ligne, la lecture reprendra là où elle s'était arrêté.
|
Sinon il y a aussi... (mais c'est plus bourrin) mais là au moins tu n'auras pas de problème de taille de ligne.
|
Ah oui ok avec un fgetc. Tu prend une variable char [] et tu rajoute a chaque fois les caractère sue tu as dans le fgetc. quand tu fini ta ligne tu passe a la suivante et du coup on a plus besoin de prendre la taille de ta ligne, le fgetc passera tout seul a la ligne suivante c ça ?
|
Euh, c'est dommage de t'être embêter à ne pas vouloir effectuer des fgets avec de grands buffers, pour effectuer un code comme ça, tu ne résous absolument pas le problème. Si ta ligne est trop grande, ça va faire une erreur de segmentation pour ton buffer nom.
for(i=0;i<100;i++){
fgets(nom,sizeof nom,fichier);
printf("%s\n",nom);
}
Et encore mieux, au lieu de for, tu peux utiliser la boucle while(! feof(fichier)) pour parcourir tout le fichier.
} Google is your friend |