Où placer le feof(fi_in) ?
Bonjour,
J'ai écris un simple petit programme qui recopie le contenu d'un fichier dans un autre.
Il prend donc en paramètre le nom du fichier à copier.
Je me demandais où il fallait placer le feof().
Dans les FAQ il est mit après la boucle while qui parcourt le fichier.
Moi je l'ai mis dedans.
Est-ce que celà a-t-il un sens ?
Moi j'estime qu'il faut tester que tout ailles bien avant chaque lecture d'une nouvelle ligne.
Merci.
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 31 32 33 34
|
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <errno.h>
4
5 #define LEN 200
6
7 int main(int argc, char** argv ){
8
9 FILE* fi_in ;
10 FILE* fi_out ;
11 char* ligne ;
12
13 ligne = malloc( sizeof(char)*LEN );
14 if( ( fi_in = fopen(argv[1], "r" ) ) == NULL ){
15 fprintf(stderr,"Erreur fopen de fi_in %d\n", errno);
16 exit (1) ;
17 }
18 if( (fi_out = fopen("fichierOut.txt","w+" )) == NULL){
19 fprintf(stderr,"Erreur fopen de fi_out %d\n", errno);
20 exit(2);
21 }
22
23 while( ( fgets( ligne, LEN, fi_in ) != NULL ) ){
24 if( feof(fi_in) ){
25 exit (3) ;
26 fprintf(stderr, "Erreur de fin de fichier %d\n", errno);
27 }
28 fputs(ligne, fi_out);
29 }
30 fclose(fi_in);
31 fclose(fi_out);
32
33 } |