SVP aider moi sur du c

Fermé
niki - 17 août 2004 à 17:00
 niki - 17 août 2004 à 18:08
g un prog qui lit un ensemble de mot dans un fichier d'entree et les récrit dans un autre , j'utilise une boucle comme celle-ci:

while (!feof(filer)) //filer=fichier d'entree
{

fscanf(filer,"%s",&chaine); //lit une chaine de caractere
fprintf(filew,"%s",chaine); //ecrit chaine ds fichier de sortie

}

ca marche bien sauf que le dernier mot et répéter 2 fois dans mon fichier de sortie ,pkoi? et stt comment faire? ex:

fichier entree =
coucou ca va

fichier sortie=
coucou ca va va
"va" est répété 2 fois pkoi?et comment faire pour l'éviter
merci bcp

5 réponses

curiousest_intruder
17 août 2004 à 17:02
T'as essayé la boucle suivante ?

while (!feof(filer)) //filer=fichier d'entree
{
if (fscanf(filer,"%s",&chaine)) //lit une chaine de caractere
fprintf(filew,"%s",chaine); //ecrit chaine ds fichier de sortie
}
0
merci de m'aider
j'ai essayer ca marche pas mieux et je voi pas trop l'intérer du if.
à mon avis c'est dù au fait que quand il détecte qu'il est a la fin du fichier d'entree , il rentre quand meme une derniere fois dans la boucle et récrit le mot enregistrer dans chaine, d'ou le fait que g 2 fois le dernier mot.
Pense tu pas?ou je me plante? Comment faire
0
curiousest_intruder
17 août 2004 à 17:18
Il ne faut pas appeler fprintf si fscanf n'a pas trouvé de chaîne.
Le bug est là.
Il faut tester le résultat du "scanf".
0
OK g capter mais comment faire car le if marche pas
peut tu m'aider car moi jsui perdu
merci
0
curiousest_intruder
17 août 2004 à 17:54
Essaie :

while (!feof(filer)) //filer=fichier d'entree
{
if (fscanf(filer,"%s",&chaine) != -1)
fprintf(filew,"%s",chaine);
}
0
curiousest_intruder
17 août 2004 à 18:02
Résumons-nous :
Il faut de manière générale tester les comptes-rendus retournés par les fonctions. Dans cet exemple, il est plus sûr
d'écrire :

while (fscanf(filer, "%s", &chaine) != EOF)
{
fprintf (filew, "|%s", chaine);
}

Take care !
0

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

Posez votre question
Merci very much ca marche impeccable
0