Yo puedo hacer el programa pero no lo puedo comprobar en winrar (no uso windows). He hecho la prueba y el archivo resultante es detectado como imagen, y de dos programas de compresión que he probado uno puede extraer sin problemas, el otro dice "Tipo de archivador no soportado." pero si le cambio la extensión a rar (sólo el nombre) lo lee sin problemas. Así que, en principio, parece que el método funciona pero lo tiene que soportar el programa de compresión.
Te pongo el código:
#include <stdio.h>
#define BUFFER_SIZE 1024
int main(int argc, char* argv[]){
FILE *o1, *o2, *d;
unsigned int n_read;
char buffer[BUFFER_SIZE];
o1 = fopen(argv[1], "rb");
o2 = fopen(argv[2], "rb");
d = fopen(argv[3], "wb");
while (!feof(o1)){
n_read = fread(buffer, sizeof(char), BUFFER_SIZE, o1);
fwrite(buffer, sizeof(char), n_read, d);
}
while (!feof(o2)){
n_read = fread(buffer, sizeof(char), BUFFER_SIZE, o2);
fwrite(buffer, sizeof(char), n_read, d);
}
close(o1);
close(o2);
close(d);
return 0;
}
Hay que pasarle 3 parámetros: los nombres de los dos ficheros de origen y el del fichero resultante. No hace ninguna comprobación, así que si no se meten los 3 parámetros, los ficheros de origen no existen o no se pueden leer o el de destino no se puede crear o escribir en él, el programa petará.