bonjour, ce code est tiré du tutoriel de Patrick TRAU à l'adresse:
http://www-ipst.u-strasbg.fr/pat/program/tpc.htm
il permet de copier un fichier source vers un fichier de destination.
s'il vous plaît, pourquoi le: (char*)buffer ??
une autre chose: dans ce cours, on dit que les fonctions fopen, fread et fwrite utilisent des fichiers "bufférisés", à la différence de open, read et write, qui utilisent des fichiers bruts.
il dit aussi sur les fichiers bufférisés:alors, fopen, fread et fwrite n'écrivent pas sur le disque ??Ceci signifie qu'une instruction d'écriture n'impliquera pas une écriture physique sur le disque mais dans le buffer, avec écriture sur disque uniquement quand le buffer est plein.
Merci.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 #include <stdio.h> #include <fcntl.h> #include <unistd.h> #include <sys\stat.h> #define taillebloc 1024 int main(int argc,char *argv[]) { int source, destination; char buffer[taillebloc]; int nb_lus,nb_ecrits; if (argc!=3) {puts("erreur arguments");return(1);} if((source=open(argv[1],O_RDONLY|O_BINARY))<0) {puts("erreur ouverture");return(2);} if((destination=open(argv[2], O_WRONLY| O_CREAT| O_TRUNC| O_BINARY, S_IREAD| S_IWRITE| S_IEXEC))<0) {puts("erreur ouverture");return(2);} do { nb_lus=read(source,(char *)buffer,taillebloc); if (nb_lus>0) nb_ecrits= write(destination,(char*)buffer, nb_lus); } while ((nb_lus==taillebloc)&&(nb_ecrits>0)); close(source); close(destination); return(0); }
Partager