PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C: Datei kopieren



SeeksTheMoon
25-08-2004, 15:34
Wie kann man in C Dateien kopieren? Ich finde da keine fertige Funktion zu.

Muss ich etwa jedesmal zwei FILE*-Zeiger aufmachen, die eine Datei häppchenweise einlesen und auf den anderen Zeiger schreiben? Das kanns ja wohl nicht sein.
Wenn es in der std-lib sowas wie remove() gibt, dann muss es doch auch etwas wie copy() geben

system() will ich nicht, das ist nicht plattformunabhängig.

TrollSlayer
25-08-2004, 21:36
0 #include <sys/sendfile.h>
1 int main(int argc, char **argv) {
2 int src; /* file descriptor for source file */
3 int dest; /* file descriptor for destination file */
4 struct stat stat_buf; /* hold information about input file */
5 off_t offset = 0; /* byte offset used by sendfile */
6
7 /* check that source file exists and can be opened */
8 src = open(argv[1], O_RDONLY);

9 /* get size and permissions of the source file */
10 fstat(src, &stat_buf);

11 /* open destination file */
12 dest = open(argv[2], O_WRONLY|O_CREAT, stat_buf.st_mode);

13 /* copy file using sendfile */
14 sendfile (dest, src, &offset, stat_buf.st_size);

15 /* clean up and exit */
16 close(dest);
17 close(src);
18 }

Ist allerdings auch nicht plattformunabhängig. Gibt's nur unter Linux IMHO.