C Interview Questions and Answers

 

How do I copy files?

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.

Posted by:Richards