Fichier

mast20 Messages postés 14 Statut Membre -  
Dalfab Messages postés 638 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
svp est ce que quelqu un peut m aider a ecrire une fonction qui recopie un fichier dans un autre

2 réponses

  1. baladur13 Messages postés 47340 Date d'inscription   Statut Modérateur Dernière intervention   14 396
     
    Bonjour
    Les forums de CCM n'ont pas pour vocation de faire vos devoirs à votre place..

    A consulter
    https://www.commentcamarche.net/infos/25899-demander-de-l-aide-pour-vos-exercices-sur-ccm/

    Montrez ce que vous avez fait... et vous aurez des conseils pour modifications éventuelles.
    0
    1. mast20 Messages postés 14 Statut Membre
       
      est ce que j ai ecrit est correct ??
      void copier (char *source, char *desti)
      {FILE *f1 ,*f2 ; char x;
      fp1=fopen(source,"r");
      if (f1==NULL) {printf("erreur!!!!!!");exit(1);}
      fp2=fopen(desti,"w");
      if (f2==NULL) {printf("erreur!!!!!!") ;fclose(f1) ;exit(1); }
      do
      {x=fgetc(f1);
      fputc(x,f2);
      }while(x!=EOF(f1));
      fclose(f1);fclose(f2);
      }
      0
  2. Dalfab Messages postés 638 Date d'inscription   Statut Membre Dernière intervention   102
     
    Bonjour,
    C'est pas trop mal.
    Commentaires dans le code
    void copier( const char *source, const char *desti ) // const car les noms ne seront jamais modifiés ici 
    {
       FILE *fp1 ,*fp2;
       int x;  // entier plutôt que char pour pouvoir détecter la fin de fichier par EOF
       fp1 = fopen( source , "rb" );  // ouvrir le fichier en binaire sinon certains octets risquent d'être perdus
       if ( fp1 == NULL ) { printf("erreur!!!!!!"); exit(1); } 
       fp2 = fopen( desti , "wb" );   // ouvrir le fichier en binaire
       if ( fp2 == NULL ) { printf("erreur!!!!!!"); fclose(fp1); exit(1); } 
       while ( ( x = fgetc( fp1 ) ) != EOF ) 
       {
          // sinon la dernière lecture du EOF serait recopiée dans fp2!
          fputc( x , fp2 ); 
       } 
       fclose( fp2 );
       fclose( fp1 ); 
    }
    0