13/04/14 11:15
rocchissimo
Buongiorno e buona domenica,
Avendo un pò di tempo libero ho provato a realizzare un programmino in C++ che partendo da due eseguibili ne crei uno solo contenente entrambi.
Per testarlo ho realizzato i due programmi, sempre in C++, che dovranno essere uniti:
mini.cpp
Prog.cpp
e il programma che dovrebbe aprirli, leggerli e scrivere un terzo file che contenga entrambi:
Unisci.cpp
Il problema è che se provo ad eseguire il file creato (total.exe) l'output è identico all'output di mini.exe benchè la dimensione del file generato dal programma sia uguale alla somma dei due programmi di partenza.
Da questo ho dedotto che il problema si presenti perchè avendo compilato i due file iniziali individualmente il file finale abbia una struttura simile:
------ Inizio file 1 ------
------ Contenuto ------
------ Fine file 1 ------ //Quì ipotizzo sia presente un istruzione che dica più o meno: "Siamo arrivati alla fine del programma, perciò esco" ignorando bellamente tutto il resto del file.
------ Inizio file 2 ------
------ Contenuto ------
------ Fine file 2 ------
Come protrei risolvere? Quello che ho ipotizzato è corretto?
Saluti
Avendo un pò di tempo libero ho provato a realizzare un programmino in C++ che partendo da due eseguibili ne crei uno solo contenente entrambi.
Per testarlo ho realizzato i due programmi, sempre in C++, che dovranno essere uniti:
mini.cpp
#include <stdio.h> int main() { printf("\n\nTutto OK\n\n"); }
Prog.cpp
#include <stdio.h> #include <conio.h> int main() { printf("Tranquillo programma che non fa nulla\n\n"); getch(); }
e il programma che dovrebbe aprirli, leggerli e scrivere un terzo file che contenga entrambi:
Unisci.cpp
#include <stdio.h> #include <iostream> #include <conio.h> int main() { char buffer[1]; FILE *in1, *in2,*out; in1=fopen("mini.exe","rb"); in2=fopen("prog.exe","rb"); out=fopen("total.exe","wb"); while(fread(buffer,1,1,in1)) fwrite(buffer,1,1,out); while(fread(buffer,1,1,in2)) fwrite(buffer,1,1,out); fclose(in1); fclose(in2); fclose(out); printf("\nOperazioni completate"); getch(); return 0; }
Il problema è che se provo ad eseguire il file creato (total.exe) l'output è identico all'output di mini.exe benchè la dimensione del file generato dal programma sia uguale alla somma dei due programmi di partenza.
Da questo ho dedotto che il problema si presenti perchè avendo compilato i due file iniziali individualmente il file finale abbia una struttura simile:
------ Inizio file 1 ------
------ Contenuto ------
------ Fine file 1 ------ //Quì ipotizzo sia presente un istruzione che dica più o meno: "Siamo arrivati alla fine del programma, perciò esco" ignorando bellamente tutto il resto del file.
------ Inizio file 2 ------
------ Contenuto ------
------ Fine file 2 ------
Come protrei risolvere? Quello che ho ipotizzato è corretto?
Saluti
aaa