Что вы имеете в виду «лучший путь»? Я думаю, что это самый простой способ ... надеюсь, это то, что вы имели в виду:)
fopen
входные и выходные файлы в двоичном режиме
FILE *exein, *exeout;
exein = fopen("filein.exe", "rb");
if (exein == NULL) {
/* handle error */
perror("file open for reading");
exit(EXIT_FAILURE);
}
exeout = fopen("fileout.exe", "wb");
if (exeout == NULL) {
/* handle error */
perror("file open for writing");
exit(EXIT_FAILURE);
}
fread
и fwrite
size_t n, m;
unsigned char buff[8192];
do {
n = fread(buff, 1, sizeof buff, exein);
if (n) m = fwrite(buff, 1, n, exeout);
else m = 0;
} while ((n > 0) && (n == m));
if (m) perror("copy");
и, наконец, закройте файлы
if (fclose(exeout)) perror("close output file");
if (fclose(exein)) perror("close input file");
Веселись!