Écrire une fonction :
int copie(FILE *entree, FILE *sortie)
qui copie le contenu du fichier de descripteur entree dans le fichier de descripteur sortie. La fonction doit retourner le nombre d'octets copiés, ou -1 en cas d'erreur. La copie peut se faire par caractère avec getc()
/ putc()
ou bien par bloc avec fread()
/ fwrite()
.
Tester cette fonction en écrivant un programme principal l'utilisant avec la copie de deux fichiers : un fichier texte (par exemple le code source du programme), et un fichier binaire (par exemple un fichier exécutable). Vous pourrez utiliser la commande cmp(1)
pour vérifier que la copie est conforme à l'original.
Écrire un programme binhexasc.c qui :
Les trois fichiers devront être créés lors de l'écriture avec les droits r--- --- ---. Vous pourrez utiliser les commandes od(1) ou hd(1) pour vérifier le contenu du fichier res.bin.
Écrire un programme :
copie **[**src1 src2 src3 ...**]** dest
qui copie les fichiers src1, src2, src3, ... dans le fichier dest. Si le nombre de paramètres est égal à 1, le programme devra copier le contenu de son entrée standard. De même, si un fichiers source est "-", c'est l'entrée standard qui est utilisée comme source.
Le fichier destination doit être créé avec les droits rw- --- --- et ne doit pas exister. Le programme doit afficher un message d'erreur si ce n'est pas le cas.
1_copie_block.c
1_copie_char.c