prev up next   top/contents search

comp.lang.c FAQ list · Question 19.16b

Q: How do I copy files?

A: Either use system() to invoke your operating system's copy utility (see question 19.27), or open the source and destination files (using fopen or some lower-level file-opening system call), read characters or blocks of characters from the source file, and write them to the destination file. Here is a simple example:

#include <stdio.h>

int copyfile(char *fromfile, char *tofile)
	FILE *ifp, *ofp;
	int c;

	if((ifp = fopen(fromfile, "r")) == NULL) return -1;
	if((ofp = fopen(tofile, "w")) == NULL) { fclose(ifp); return -1; }

	while((c = getc(ifp)) != EOF)
		putc(c, ofp);


	return 0;
To copy a block at a time, rewrite the inner loop as
	while((r = fread(buf, 1, sizeof(buf), ifp)) > 0)
		fwrite(buf, 1, r, ofp);
where r is an int and buf is a suitably-sized array of char.

References: K&R Sec. 1, Sec. 7

prev up next   contents search
about this FAQ list   about eskimo   search   feedback   copyright

Hosted by Eskimo North