sich selbst ausgebendes Programm
-
Hi,
ich bin mal wieder über eine Aufgabe gestolpert, die mir mein Matheprof im Grundstudium gegeben hatte.
Aufgabe: Schreiben Sie ein Programm, was sich selbst ausgibt.Es gab damals heftige Diskussionen mit ihm, da jeder die Aufgabe andres verstand.
Am Ende war es ein printf-Monster, was sich selbst ausgegeben hatte.
Leider finde ich diese Zeile nichtmehr und deshalb wollte ich fragen, ob jemand mal so eine Anweisung hier posten könnte.Danke
-
Sowas hier?
main(char*a){a="main(char*a){a=%c%s%c;printf(a,34,a,34);}";printf(a,34,a,34);}
-
Ne, das war so ähnlich wie die Signatur von "DrGreenthumb" nur halt mit nem printf.
-
Dann such mal auf www.ioccc.org - da könntest du fündig werden. Aber DrZoidbergs Variante ist die gängigste.
-
WIe funktioniert das denn? Ich kann das kompilieren ohne stdio.h einzubinden
und es gibt den gesamten Quelltext ornungsgemäß aus
-
Tja, das ist eben C

Wichtig ist halt: 34 ist der ASCII Code von "
Damit sollte es klar sein, oder?
-
Achso, es wird einmal das was als String da steht ausgegeben und einmal noch der
Funktionsaufruf der das ausgibt, aber wieso muss ich hier nicht stdio.h inkludieren?
-
weil es in C implizite Deklarationen gibt. Wenn du eine Funktion aufrufst, deren Deklaration nicht sichtbar ist, wird der Typ
int funktion()angenommen. Bei printf funktioniert das ja anscheinend auch prima. Ob das nach ANSI-C streng definiert ist, weiß ich allerdings nicht.
-
Ich hab da mal noc eine Frage, geht das auch unter c++?
-
Was, implizite Deklarationen? Nein.
-
Ne, ich meinte so ein Programm;

-
-
Wunderbar vielden Dank.
-
Man kann doch auch einfach die *.c bzw. *.cpp-Datei in einen String laden und ausgeben.

-
dazu bräuchte man den dateinamen