Thomas Roessler <[EMAIL PROTECTED]>:
> Maybe a contest about generating the shortest
> self-replicating program which runs on a given
> architecture is more productive like this. ;-)
>
> I'm offering 11 bytes, plus portability.
Does it work anything like the attached program?
Edmund
#include <stdio.h>
void escape(char *x)
{
for (; *x; x++)
if (*x == '"' || *x == '\\')
printf("\\%c", *x);
else if (*x == '\n')
printf("\\n\"\n\"");
else
putchar(*x);
}
int main(int argc, char *argv[])
{
char *x = "#include <stdio.h>\n"
"\n"
"void escape(char *x)\n"
"{\n"
" for (; *x; x++)\n"
" if (*x == '\"' || *x == '\\\\')\n"
" printf(\"\\\\%c\", *x);\n"
" else if (*x == '\\n')\n"
" printf(\"\\\\n\\\"\\n\\\"\");\n"
" else\n"
" putchar(*x);\n"
"}\n"
"\n"
"int main(int argc, char *argv[])\n"
"{\n"
" char *x = \"";
char *y = "\";\n"
"\n"
" printf(\"%s\", x);\n"
" escape(x);\n"
" printf(\"\\\";\\n char *y = \\\"\");\n"
" escape(y);\n"
" printf(\"%s\", y);\n"
" return 0;\n"
"}\n"
"";
printf("%s", x);
escape(x);
printf("\";\n char *y = \"");
escape(y);
printf("%s", y);
return 0;
}