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);
	fclose(ifp);
	fclose(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