#include // pour printf, fprintf, fopen, fread, fwrite, fclose #include // pour exit() int main(int argc, char *argv[]) { FILE *source, *dest; // pointeurs de fichiers char c; // variable pour stocker un octet lu // Vérifier que l'utilisateur a bien fourni deux arguments (source et destination) if (argc != 3) { fprintf(stderr, "Usage: %s \n", argv[0]); exit(1); // quitte le programme avec code d'erreur } // Ouvrir le fichier source en mode lecture binaire ("rb") source = fopen(argv[1], "rb"); if (source == NULL) { // si l'ouverture échoue perror("Erreur ouverture source"); exit(1); } // Ouvrir ou créer le fichier destination en mode écriture binaire ("wb") dest = fopen(argv[2], "wb"); if (dest == NULL) { // si l'ouverture échoue perror("Erreur ouverture destination"); fclose(source); // on ferme le fichier source déjà ouvert exit(1); } // Lire un octet depuis le fichier source puis l'écrire dans le fichier destination while (fread(&c, 1, 1, source) == 1) { if (fwrite(&c, 1, 1, dest) != 1) { perror("Erreur écriture"); fclose(source); fclose(dest); exit(1); } } // Fermer les deux fichiers fclose(source); fclose(dest); // Indiquer que la copie s'est terminée correctement printf("Copie terminée (méthode stdio).\n"); return 0; // programme terminé sans erreur }