first commit
This commit is contained in:
46
TP_SCR/TP_Fichiers/cp_stdio_ultra.c
Normal file
46
TP_SCR/TP_Fichiers/cp_stdio_ultra.c
Normal file
@@ -0,0 +1,46 @@
|
||||
#include <stdio.h> // pour printf, fprintf, fopen, fread, fwrite, fclose
|
||||
#include <stdlib.h> // 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 <fichier_source> <fichier_dest>\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
|
||||
}
|
||||
Reference in New Issue
Block a user