Copier un fichier

Problème

Vous voulez copier un fichier à un autre endroit.

Solution

Ouvrez le fichier à copier en lecture et sa copie en écriture, puis recopiez le contenu de l’un dans l’autre.

Discussion

Voici une fonction qui copie un fichier dans un nouveau fichier :


int 
copy (const char *existing_file, const char *new_file) 
{ 
 
  FILE *fn, *fe; 
  char buf[BUFSIZ]; 
  if (NULL == (fe = fopen (existing_file, "r"))) 
    { 
      fprintf (stderr, 
               "Impossible d'ouvrir le fichier '%s' en lecture\n", 
               existing_file); 
      return (-1); 
    } 
  if (NULL == (fn = fopen (new_file, "w"))) 
    { 
      fprintf (stderr, 
               "Impossible d'ouvrir le fichier '%s' en écriture\n", 
               new_file); 
      fclose (fe); 
      return (-1); 
    } 
 
  while (!feof (fe)) 
    { 
      ssize_t l; 
      l = fread (buf, sizeof (*buf), BUFSIZ, fe); 
      if (ferror (fe)) 
        { 
          fprintf (stderr, "Erreur de lecture\n"); 
          fclose(fn); 
          fclose(fe); 
          return (-1); 
        } 
      fwrite (buf, sizeof (*buf), l, fn); 
      if (ferror (fn)) 
        { 
          fprintf (stderr, "Erreur d'écriture\n"); 
          fclose(fn); 
          fclose(fe); 
          return (-1); 
        } 
    } 
  fclose(fn); 
  fclose(fe); 
  return (0); 
}
 

Pour la taille du tampon, vous pouvez utiliser n’importe quelle valeur, mais la constante système BUFSIZ correspondant à la taille...

Pour consulter la suite, découvrez le livre suivant :
couv_EI3CACT.png
60-signet.svg
En version papier
20-ecran_lettre.svg
En version numérique
41-logo_abonnement.svg
En illimité avec l'abonnement ENI
130-boutique.svg
Sur la boutique officielle ENI
Précédent
Renommer un fichier
Suivant
Déplacer un fichier