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