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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 }