Answer:
Either use system() to invoke your operating system's copy utility, 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.
#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.
Previous Question | Next Question |
Why cant I open a file by its explicit path? | How can I delete a file? |