Devo unire due file in uno solo. Uno è un eseguibile e l'altro un file di testo. Devo unirli in un file inutile che però serve come base per un installer. Io ho pensato:
1) leggo il primo file in modo binario;
2) lo copio integralmente byte per byte in un altro file;
3) segno quanti byte ho copiato;
4) gli aggiungo il secondo file;
5) per dividerli leggo il file ottenuto byte per byte e, arrivato al numero preso nel punto 3), chiudo il file e ne apro un altro.
Ho già fatto così per unire delle bitmap per ottenere una specie di "filmato" per il dos. Però con il file eseguibile ho questo problema: il programma per fare il passo 2 e 3 è quello qui sotto: molto semplice. Però esce dal ciclo quando i=12 e, dato che il file di partenza è di circa 150kB, non lo copia di sicuro. E la i vale sempre 12, anche eseguendo passo passo... Qualcuno sa come fare? Questo programma l'ho sviluppato in TurboC per DOS. Però se c'è bisogno di qualche funzione o Api del C++ o Win fa lo stesso...
#include <stdio.h>
#include <dos.h>
long int i=0;
char a;
FILE *file1, *file2;
main()
{
file1 = fopen ("Sdiapp.exe", "rb");
file2 = fopen ("Prova1.exe", "wb");
while ((a = fgetc(file1)) !=EOF)
{
fputc(a,file2);
i++;
}
printf ("%ld",i);
fclose(file1);
fclose(file2);
}