/* quine.c by joey richards: * * readable self-replicating software */ #include /* N=number of strings */ #define N 40 /* M>maximum string length */ #define M 60 char *s[] = { "char t[2*M];", "", "/* this function escapes a backslash or quote in a string", " * by placing a backslash in front of it */", "char *escape( char *s )", "{", " char *p=t;", " while( *s != 0 )", " {", " if( (*s=='\\\\') || (*s=='\"') )", " *(p++)='\\\\';", " *p=*s;", " p++;", " s++;", " }", " *p=0;", " return t;", "}", "", "int main( void )", "{", " int i;", "", " printf( \"/* quine.c by joey richards: *\\n\" );", " printf( \" * readable self-replicating software */\\n\" );", " printf( \"#include \\n\" );", " printf( \"\\n\" );", " printf( \"/* N=number of strings */\\n\" );", " printf( \"#define N %d\\n\", N );", " printf( \"/* M>maximum string length */\\n\" );", " printf( \"#define M %d\\n\", M );", " printf( \"char *s[] = {\\n\" );", " for( i=0; i\n" ); printf( "\n" ); printf( "/* N=number of strings */\n" ); printf( "#define N %d\n", N ); printf( "/* M>maximum string length */\n" ); printf( "#define M %d\n", M ); printf( "char *s[] = {\n" ); for( i=0; i