PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Programm das seinen eigene Quellcode ausgibt? (C)



BeS
14-07-2002, 01:38
Hi,
ist es in C möglich ein Programm zu schreiben das seinen eigenen Quellcode ausgibt?
Wenn ja, wäre ein kleines Beispiel nicht schlecht.

Danke!

Lin728
14-07-2002, 11:35
das einzige was geht ist, dass du den Quellcode ein einer Textdatei mitlieferts und dann mit fopen(); fread() etc. auslest und ausgibts.
Aber aus einem kompiliertem programm herauslesen geht leider nicht...

tkortkamp
14-07-2002, 13:09
Du könntest natürlich den Code mit einkompilieren:


code2char.pl: (1. Argument: Dateiname, 2. Argument Variable in der der Code steht)
$file = $ARGV[0];

open(INFO, $file);
print "char *$ARGV[1] =\n";

while($_ = <INFO>)
{
chop $_;
s/\"/\\"/g;
s/\\n/\\\\n/g;
print "\"$_\\n\"\n";
}
print ";\n";
close(INFO);

printcode.c:
#include <stdio.h>
#include "printcode.c.h"

int main(void)
{
printf("%s\n", printcode_c_h_code);
}

perl code2char.pl printcode.c printcode_c_h_code
gcc -o printcode printcode.c
./printcode:
#include <stdio.h>
#include "printcode.c.h"

int main(void)
{
printf("%s\n", printcode_c_h_code);
}




c ya,
Tobias

BeS
14-07-2002, 17:32
Hi,
ich habe vor kurzem die Radiosendung vom ccc gehört. Sie haben sich um OO-Programmierung unterhalten.
Ein Anrufer hat die Frage mit dem ausgeben des eigenen Quellcode gestellt. Die Leute vom ccc meinten das es eine klassische Programmieraufgabe wäre "Das kürzeste Programm zu schreiben das sich selber ausgibt". Und das es unter C mit printf() gehen würde das sich irgendwie zweimal ausgibt, wenn man da etwas rumbastelt würde es genau hinhauen.

Ich kann mir das aber nicht so richtig vorstellen und dachte hier hat das vielleicht schonmal jemand gemacht?

kth
17-07-2002, 18:48
Schau' mal auf:

http://www.nyx.net/~gthompso/quine.htm