Ask your own question, for FREE!
Computer Science 6 Online
hartnn (hartnn):

Write a program in C which outputs its own source code.

hartnn (hartnn):

i don't want the exact code, just discuss different logic with which we can do this....

OpenStudy (konradzuse):

Sounds pretty crazy...

hartnn (hartnn):

yes...

OpenStudy (konradzuse):

Lets see now....

OpenStudy (konradzuse):

And the source code has to actually do something itself huh?

hartnn (hartnn):

no restriction...it can do something else....or it can just output its own source code...

OpenStudy (konradzuse):

Cuz technically you could just write a whole bunch of nonsense as a string ansd then print that :P.

OpenStudy (konradzuse):

Idk why you would ever need to do this, is this some BS school assigment?

hartnn (hartnn):

not assignment...just curious to know how..

OpenStudy (konradzuse):

Yeah I'm stumped on this one atm....

OpenStudy (konradzuse):

I asked on the code ranch for you, so lets see what they think up....

OpenStudy (konradzuse):

or just creating a billion print statements lol.

hartnn (hartnn):

lol, a printf inside a printf inside a printf .....and so on..infinite printfs

OpenStudy (konradzuse):

na more like int i = 0; printf("int i = 0);

OpenStudy (konradzuse):

etc.

OpenStudy (konradzuse):

but you could literally do printf("code code code code more code yay code"); If the code doesn't have to run... 1 GIANT print statement...

OpenStudy (anonymous):

Dont know if this will work... but u can try file functions (read and write or standard output)... (assuming u are going to save the source code file first) just ask your code to read that file (source.c) and maybe buffer it in some array .. and then print it :P

OpenStudy (anonymous):

errr... do u want this code to be platform independent?

OpenStudy (konradzuse):

I was also thinking that, but you would have to say what you want to write and read in :p.

OpenStudy (rsmith6559):

How about taking argv[0], appending ".c", if the file exists, open it, getc/putc and close it?

OpenStudy (across):

This is like asking to build a screwdriver using a screwdriver. :P

OpenStudy (konradzuse):

I found this http://en.wikipedia.org/wiki/Quine_(computing)

hartnn (hartnn):

quine is interesting, but not in c. rsmith, can u elaborate ?

OpenStudy (anonymous):

Yeah, quine is an odd area of CS. This code will print everything but the include line. #include <stdio.h> int main() { char *s="int main() { char *s=%c%s%c; printf(s,34,s,34); }"; printf(s,34,s,34); }

OpenStudy (rsmith6559):

C is a compiled language. The executing file isn't the source file. Therefore, the program becomes basically, a simple open a file read it in, output it and close the file. A simple guess for the source code file name is the executable file's name with ".c" appended.

OpenStudy (konradzuse):

They have c++ you can change what's needed youself...e

OpenStudy (dls):

Hint: You can save the code onto a textfile and thereafter display it directly via simple input functions :)

Can't find your answer? Make a FREE account and ask your own questions, OR help others and earn volunteer hours!

Join our real-time social learning platform and learn together with your friends!
Can't find your answer? Make a FREE account and ask your own questions, OR help others and earn volunteer hours!

Join our real-time social learning platform and learn together with your friends!