EXE verdoppeln?
-
Hallo zusammen ...
Ich habe mal eine Frage...
Ich habe ein Programm:
#include <stdio.h> int main(int argc, char* argv[]) { printf("Test"); }Dieses Programm habe ich als exe kompiliert (Test.exe).
nun habe ich folgendes Programm:
#include <stdio.h> int main(int argc, char* argv[]) { FILE *in, *out; in = fopen("Test.exe", "rb"); out = fopen("Doppeltest.exe", "wb"); while (in && !feof(in)) { fputc(fgetc(in), out); } while (in && !feof(in)) { fputc(fgetc(in), out); } fclose(in); fclose(out); }Wenn ich nun Doppeltext.exe ausführe, erscheint jedoch nur einmal Test in einem Konsolenfenster.
Wie kann ich es schaffen, dass 2x Test erscheint, ohne die Test.exe zu ändern?
Vielen Dank für eure Hilfe!
-
Nicht, indem du zwei Executeables hintereinanderkopierst. Du mösstest den Call zu
printfaufspüren (incl. push/pop der Parameter) und diesen Teil zweimal hintereinander einfügen, oder um den call eine Schleife bauen.greetz, Swordfish
PS: wofür? Spielerei?
-
Frage hat sich erledigt.
Vielen Dank für eure Hilfe!
-
Danke für den post, welcher nicht in MEINEM Namen war!
Es handelt sich tatsächlich um eine Spielerei! Ich möchte die main Funktion 2 mal aufrufen ...
LG
-
ISO/IEC 14882:2003 (E) schrieb:
3.6.1 Main function
[...]
3 The function
mainshall not be used (3.2) within a program. [...]
4 Calling the functionvoid exit(int);declared in<cstdlib>(18.3) terminates the program [...]
5 A return statement inmainhas the effect of leaving the main function (destroying any objects with automatic
storage duration) and callingexitwith the return value as the argument. If control reaches the end
of main without encountering a return statement, the effect is that of executingreturn 0;greetz, Swordfish
BTW: Vielleicht sollte der Thread nach WinAPI verschoben werden...
-
Danke für deine Antwort ... aber irgendwie werde ich daraus nicht schlau!
Kannst du das mal genauer erklären?
LG
-
Hm, warum ich geschrieben habe, dass Du in WinAPI besser aufgehoben wärst, kann ich mir im nachninein nicht mehr erklären

Du darfst die Funktion
mainnicht zweimal aufrufen! Den (Binär-) Code dermainhintereinander zu kopieren bringt Dir auch nix:(Code nur sinngemäß!)
#include <cstdio> int main( ) { std::puts( "sonstwas" ); return 0; // implizit oder explizit ist egal -> Kontrolle zurück an die CRT. } int main( ) { std::puts( "sonstwas" ); return 0; }Somit müsstest du den Binärcode kopieren, aber keine ganzen Funktionen. Eine einfache Lösung dafür gibt's nicht und mir fällt auf die schnelle auch beim besten Willen kein praxisrelevantes Beispiel ein, bei dem man ein solches gefrickel bräuchte/haben möchte.
greetz, Swordfish
-
Hallo
Das Zitat sagt aus das die standardisierte main-Funktion nicht mehrmals innerhalb eines Programms ausgeführt werden darf.
Ohne das Original-Programm zu ändern kannst bestenfalls ein Programm zweimal hintereinander aufrufen und ausführen (siehe auch Batch-Datei).bis bald
akari
-
#include <cstdlib> #include <fstream> #include <iostream> int main(int argc, char** argv) { { std::ifstream file_stream_in(argv[0]); std::ofstream file_stream_out("copy.exe"); file_stream_out << file_stream_in.rdbuf(); } std::system("copy.exe"); std::clog << "Second instance started!" << std::endl; std::cout << "Let's do some interessting stuff!" << std::endl; }... fertig

-
Gibt 'ne schöne Endlosschleife, oder?
greetz, Swordfish
-
(D)Evil schrieb:
#include <cstdlib> #include <fstream> #include <iostream> int main(int argc, char** argv) { { std::ifstream file_stream_in(argv[0]); std::ofstream file_stream_out("copy.exe"); file_stream_out << file_stream_in.rdbuf(); } std::system("copy.exe"); std::clog << "Second instance started!" << std::endl; std::cout << "Let's do some interessting stuff!" << std::endl; }... fertig

letz bomb da n00bs
