Usare la system() o cmq una qualsiasi funzione che lanci un comando e' la soluzine *contadina* (senza nessuna offesa ai contadini che sono dei grandi, ma che con i pc di solito non ci sanno fare) alla questione. Vosto che sono per le cose veloci e ottimizzate... il modo migliore per copiare un file da una parte all'altra e' quello di aprire il file da copiare e schiaffare byte per byte nella locazione da copiare. In C:

******* snip ******

#include <stdio.h>

int main(int argc, char *argv[]) {

FILE *buf_read, *buf_write;
int ch;

buf_read = fopen(argv[1], "r");
buf_write = fopen(argv[2], "w");

while ((ch = fgetc(buf_read)) != EOF)
fputc(ch, buf_write);

fclose(buf_write);
fclose(buf_read);

return 0;
}

****** snip ******

Per copiara un'intera directory invece ovviamente devi copiare ogni singolo file. Per Unix trovi informazioni con i man:

man opendir
man readdir
man closedir


Su windows e DOS non lo so, non ho mai provato

bye