Lecture de fichier

Résolu
minet03 Messages postés 415 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 2 décembre 2005 - 21 août 2004 à 12:07
Battousai Messages postés 20 Date d'inscription lundi 12 avril 2004 Statut Membre Dernière intervention 19 avril 2006 - 23 août 2004 à 14:29
Hello tout le monde !
Je voulais vous demander comment on fait pour lire ligne par linge dans un fichier. J'ai déjà mis :
fgets(ligne, 255, fichier);
for(i=0;i<=strlen(ligne);i++)
{
printf("%c\n\r", ligne[i]);
}

Si j'ai mis for() c'est pour analyser chaque caractère plus tard.
Voils donc là je récupère la première ligne, mais la deuxième je fais comment?

10 réponses

Battousai Messages postés 20 Date d'inscription lundi 12 avril 2004 Statut Membre Dernière intervention 19 avril 2006
21 août 2004 à 13:48
à mes connaissance ,bien que je suis novice en c et en manipulation de fichier ,fgets cesse l lecture soit à n-1 caractere soiut au premier \n les stocke dans ligne
peut etre cette boucle devrait marcher a moin qu'un autre trouve une autre idée

while (!feof(fichier))
{
fgets(ligne, 255, fichier);
for(i=0;i<=strlen(ligne);i++)
{
printf("%c\n\r", ligne[i]);
}
}
3
Battousai Messages postés 20 Date d'inscription lundi 12 avril 2004 Statut Membre Dernière intervention 19 avril 2006
21 août 2004 à 13:03
pour quoi tu a mit 255,
normalement la fin de line dans ton fichier et donée par un \n ou un 13 ascii ,tu utiliser une boucle pour connaitre le nombre de char avant le prochain retour a la line et puis tu utilise fgets et ainsi de suite jusqu'a la fi de fichier.
0
minet03 Messages postés 415 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 2 décembre 2005 3
21 août 2004 à 13:07
j'ai mis 255 car il demande un chiffre pour un char !
tu peu mieu expliqué stp :-D
0
minet03 Messages postés 415 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 2 décembre 2005 3
21 août 2004 à 14:03
ok ca roule ta boucle le problème c'est qu'il me met 2 fois la dernière ligne ! si qqu à la solution !?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
21 août 2004 à 17:07
char line[1024];
...

while( fgets( line, sizeof line, file) )
{
/* pour enlever le '\n' */
line[ strlen(line) - 1 ] =0;
puts(line);
}
0
minet03 Messages postés 415 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 2 décembre 2005 3
21 août 2004 à 18:00
oui mais enlever les \n sa m'arrange pas ! Voilà mon code :
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

FILE *fichier;
char ligne[255];char *caractere "a", *retour "\n";
int i;

int main()
{
fichier = fopen("fichier.txt","r");
while(feof(fichier)==0)
{
fgets(ligne, 255, fichier);
for(i=0;i<=strlen(ligne);i++)
{
printf("%c", ligne[i]);
}
}
fclose(fichier);
getch();
clrscr();
return 0;
}

et dans fichier.txt il y a
CyberMan
coucou

et quand je lance mon exe il me marque :
CyberMan
coucou
coucou
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
21 août 2004 à 18:42
ne fais jamais while( feof(...) )

aucun probleme comme ca

char line[1024];
...

while( fgets( line, sizeof line, file) )
{
...
}
0
minet03 Messages postés 415 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 2 décembre 2005 3
21 août 2004 à 19:06
oui mais là tu va lire qu'une seule ligne ! puis que tu fait la boucle tant que la ligne n'est pas à la fin!!!!
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
21 août 2004 à 19:12
non, la je lis tout le fichier et sans risque de plantage

je t'invite à lire la doc et un bon bouquin de c ;)
0
Battousai Messages postés 20 Date d'inscription lundi 12 avril 2004 Statut Membre Dernière intervention 19 avril 2006
23 août 2004 à 14:29
salu
oui je croi que l'idée de djl elle bien et qu'elle marche ,
enfet djl tu a l'air plus expérimeté pour quoi :

ne fais jamais while( feof(...) )

merci
0
Rejoignez-nous