Probleme avec feof

wwalker Messages postés 4 Date d'inscription mardi 14 octobre 2003 Statut Membre Dernière intervention 5 décembre 2007 - 15 oct. 2003 à 21:03
cs_alain34270 Messages postés 85 Date d'inscription mardi 11 février 2003 Statut Membre Dernière intervention 18 septembre 2005 - 16 oct. 2003 à 15:00
Mon prog doit lire chaque ligne d'un fichier input et les recopier dans un fichier output.

Probleme, il me copie deux fois la derniere ligne.
Je pense que ça vient du fait que le fichier input se termine par un retour a la ligne, mais je ne peux pas le changer.

Voici le bout de code concerné:

FILE *fileIn;
FILE *fileOut;
char numberRead[255];

while(!feof(fileIn))
{
fscanf(fileIn,"%s",numberRead);
fprintf(fileOut,"%s\n",numberRead);
}

wwalker

2 réponses

cs_alain34270 Messages postés 85 Date d'inscription mardi 11 février 2003 Statut Membre Dernière intervention 18 septembre 2005
16 oct. 2003 à 14:59
Salut

numberRead n'est pas modifié par le fscanf, car il lit une ligne vide (enfin, je pense).

Si tu veux obtenir la copie d'un fichier texte "à l'identique" (cad avec le dernier retour ligne), tu peux mettre une chaine nulle dans numberRead avant le scanf :
strcpy(numberRead,"");
ou
numberRead[0]='\0';

Si tu ne veux pas recopier le dernier retour ligne, mets aussi un if devant le fprintf.

a+
alain
0
cs_alain34270 Messages postés 85 Date d'inscription mardi 11 février 2003 Statut Membre Dernière intervention 18 septembre 2005
16 oct. 2003 à 15:00
Salut

numberRead n'est pas modifié par le fscanf, car il lit une ligne vide (enfin, je pense).

Si tu veux obtenir la copie d'un fichier texte "à l'identique" (cad avec le dernier retour ligne), tu peux mettre une chaine nulle dans numberRead avant le scanf :
strcpy(numberRead,"");
ou
numberRead[0]='\0';

Si tu ne veux pas recopier le dernier retour ligne, mets aussi un if devant le fprintf.

a+
alain
0
Rejoignez-nous