为什么这个式子可以统计换行符? #c语言include stdio<stdio.h>main() { int c,n1; while((c=getc

用C语言输出自身的程序源码(Quine)
在计算机中指的是把自身代码输出的程序,非常有趣。其实这种程序没有唯一。其实有很多种。下面就列出来几种。
main(){char *c="main(){char
*c=%c%s%c;printf(c,34,c,34);}";printf(c,3
p="p=%c%s%c;main(){printf(p,34,p,34);}";main(){printf(p,34,p,34);}
main(){char q=34,n=10,*a="main(){char
q=34,n=10,*a=%c%s%c;printf(a,q,a,q,n);}%c";printf(a,q,a,q,n);}
main(){char*a="main(){char*a=%c%s%c;int
b='%c';printf(a,b,a,b,b);}";int b='"';printf(a,b,a,b,b);}
main(a,b){a="main(a,b){a=%c%s%c;b='%c';printf(a,b,a,b,b);}";b='"';printf(a,b,a,b,b);}
main(a){printf(a="main(a){printf(a=%c%s%c,34,a,34);}",34,a,34);}
char *p="char
*p=%c%s%c;main(){printf(p,34,p,34);}";main(){printf(p,34,p,34);}
main(a){a="main(a){a=%c%s%c;printf(a,34,a,34);}";printf(a,34,a,34);}
char f[] = "char f[] =%c%c%s%c;%cmain()
{printf(f,10,34,f,34,10,10);}%c";
main() {printf(f,10,34,f,34,10,10);}
#include&stdio.h&
main(){char*c="\\\"#include&stdio.h&%cmain(){char*c=%c%c%c%.102s%cn%c
;printf(c+2,c[102],c[1],*c,*c,c,*c,c[1]);exit(0);}\n";printf(c+2,c[10
2],c[1],*c,*c,c,*c,c[1]);exit(0);}
char *a="\\\"char
*a=%c%.1s%.1s%.71s%.1sn%c;main(){printf(a+2,a[1],a,a,a,a,a[1]);}\n";main(){printf(a+2,a[1],a,a,a,a,a[1]);}
#define T(a) main(){printf(a,#a);}
T("#define T(a) main(){printf(a,#a);}\nT(%s)")
#define n(v,w) v(#w"\nn("#v","#w")");}
n(main(){puts,#define n(v,w) v(#w"\nn("#v","#w")");})
#define X(Y) main(){printf("#define X(Y)
%s\nX(%s)\n",#Y,#Y);}
X(main(){printf("#define X(Y) %s\nX(%s)\n",#Y,#Y);})
#define q(k)main(){puts(#k"\nq("#k")");}
q(#define q(k)main(){puts(#k"\nq("#k")");})
#define q(k)main(){return!puts(#k"\nq("#k")");}
q(#define q(k)main(){return!puts(#k"\nq("#k")");})
#define Z(q)q,#q
main()printf(Z("#define Z(q)q,#q\nmain()printf(Z(%s));\n"));
char *f="char *f=%c%s%c;%c#define Q '%c'%c#define N '%cn'%c#define
B '%c%c'%c#include &stdio.h&%cvoid
main(){printf(f,Q,f,Q,N,Q,N,B,N,B,B,N,N,N);}%c";
#define Q '"'
#define N '\n'
#define B '\\'
#include &stdio.h&
void main(){printf(f,Q,f,Q,N,Q,N,B,N,B,B,N,N,N);}
char a[] = "int main(){ printf(b,34,a,34,10,34,b,34,10,10,a,10);
char b[] = "char a[] = %c%s%c;&#65533;har b[] = %c%s%c;%c%c%s%c";
int main(){ printf(b,34,a,34,10,34,b,34,10,10,a,10); }
*s="rfns-.%?uwnsyk-'hmfw%/xBa'*xa'@as'1x.@|mnqj-/x.uwnsyk-'*h'1/x002:.@?";
printf("char *s=\"%s\";\n",s);
while(*s)printf("%c",*s++-5);
#include &stdio.h&
int main(void){char n='\n';char b='\\';char q='"';char*p="#include
&stdio.h&%cint main(void){char
n='%cn';char b='%c%c';char
q='%c';char*p=%c%s%c;printf(p,n,b,b,b,q,q,p,q,n);return
0;}%c";printf(p,n,b,b,b,q,q,p,q,n);return 0;}
#include&stdio.h&
char a[] = "\";\nmain() {char
*b=a;printf(\"#include&stdio.h&\\nchar
a[] = \\\"\");\nfor(;*b;b++) {switch(*b){case '\\n':
printf(\"\\\\n\");\ncase '\\\\': case '\\\"':
putchar('\\\\'); default: putchar(*b);}} printf(a);}\n";
main() {char
*b=a;printf("#include&stdio.h&\nchar
a[] = \"");
for(;*b;b++) {switch(*b){case '\n': printf("\\n");
case '\\': case '\"': putchar('\\'); default: putchar(*b);}}
printf(a);}
#define s "#define s %c%s%c%c#include
&stdio.h&%cvoid main() {
printf(%c%s%c,34,s,34,10,10,34,s,34); }" #include
void main() { printf("#define s %c%s%c%c#include
&stdio.h&%cvoid main() {
printf(%c%s%c,34,s,34,10,10,34,s,34); }",34,s,34,10,10,34,s,34);
void p(char *s){char *t;printf("%s(\"",s);for(t=s; *t!=0;
t++)switch(*t){case '\\':case
'\"':case'\'':putchar('\\');default:putchar(*t);}printf("\");}");}void
main(){p("void p(char *s){char *t;printf(\"%s(\\\"\",s);for(t=s;
*t!=0; t++)switch(*t){case \'\\\\\':case
\'\\\"\':case\'\\\'\':putchar(\'\\\\\');default:putchar(*t);}printf(\"\\\");}\");}void
main(){p");}
char *x="\";\nmain ()\n{ char *s;\n printf (\"char *x=\\\"\");\n
for(s=x;*s;s++)\n { printf
(*s=='\\\\'?\"\\\\\\\\\":*s=='\\\"'?\"\\\\\\\"\":*s=='\\n'?\"\\\\n\":\"%c\",
*s); }\n printf (\"%s\", x);\n}\n";
{ char *s;
printf ("char *x=\"");
for(s=x;*s;s++)
{ printf (*s=='\\'?"\\\\":*s=='\"'?"\\\"":*s=='\n'?"\\n":"%c", *s);
} printf ("%s", x);
char x[]=" main() { putchar(99); putchar(104); putchar(97);
putchar(114); putchar(32);
putchar(120); putchar(91); putchar(93); putchar(61); putchar(34);
for(i=0; i&strlen(x); ++i)
putchar(x[i]); putchar(34); putchar(59); for(i=0;
i&strlen(x); ++i) putchar(x[i]); putchar(10);
main() { putchar(99); putchar(104); putchar(97);
putchar(114); putchar(32); putchar(120);
putchar(91); putchar(93); putchar(61); putchar(34); for(i=0;
i&strlen(x); ++i) putchar(x[i]);
putchar(34); putchar(59); for(i=0 ; i&strlen(x);
++i) putchar(x[i]); putchar(10); }
main(){char*s="main(){char*s=%c%s%c;%cprintf(%c%s%c,34,s,34,10,34,s,34,10);}%c";
printf("main(){char*s=%c%s%c;%cprintf(%c%s%c,34,s,34,10,34,s,34,10);}%c",34,s,34,10,34,s,34,10);}
#define p(s) printf("%s\n",s);
#define q(v,s) printf("r(%s,%s)\n",#v,s);
#define r(v,s) char*v=#s;
main(){p(x)p(y)p(z)p(n)q(x,x)q(y,y)q(z,z)q(n,n)p("m")}
r(x,#define p(s) printf("%s\n",s);)
r(y,#define q(v,s) printf("r(%s,%s)\n",#v,s);)
r(z,#define r(v,s) char*v=#s;)
r(n,#define m
main(){p(x)p(y)p(z)p(n)q(x,x)q(y,y)q(z,z)q(n,n)p("m")}) m
{char* list="
printf(%c#include %cn%c);
printf(%cmain()%cn%c);
printf(%c{%c);
printf(&#65533;har* list=&#65533;%c,34);
printf(%c%cs%c, list);
printf(%c&#65533;;%c,34);
printf(list,34,92,34,34,92,34,34,34,34,37,34,34,37,34,34,37,34);}
printf("#include \n");
printf("main()\n");
printf("{");
printf("char* list=%c",34);
printf("%s", list);
printf("%c;",34);
printf(list,34,92,34,34,92,34,34,34,34,37,34,34,37,34,34,37,34);}
#include &stdio.h&
#define d "\\"
#define c "\n"
#define b "\""
#define a "#include
&stdio.h&%s#define d
%s%s%s%s%s#define c %s%sn%s%s#define b %s%s%s%s%s#define a
%s%s%s%smain(){printf(a,c,b,d,d,b,c,b,d,b,c,b,d,b,b,c,b,a,b,c,c);}%s"
main(){printf(a,c,b,d,d,b,c,b,d,b,c,b,d,b,b,c,b,a,b,c,c);}
char*p="char*p=15415,4*x=52?33/n33/55,c,n,*q;main()33&for(q=p;c=n?*q++:*p++;)"
"4putchar(n?--n,c:c&'0'&c&'6'?c&*x?n=69,'5':*(c-*x+x):c);return
*x="2???/n??/"",c,n,*q;main()??&for(q=p;c=n?*q++:*p++;)
putchar(n?--n,c:c&'0'&c&'6'?c&*x?n=69,'"':*(c-*x+x):c);return
char *f="%c%s%c,";
#include &stdio.h&
char*x[]={
"char *f=%c%s%c;",
"#include &stdio.h&",
"char*x[]={",
"},z=0;main(){",
"printf(*x,34,f,34);puts(&z);",
"puts(x[1]);puts(x[2]);",
"for(n=0;n&8;n++)printf(f,34,x[n],34),puts(&z);",
"for(n=3;n&8;n++)puts(x[n]);}",
},z=0;main(){
printf(*x,34,f,34);puts(&z);
puts(x[1]);puts(x[2]);
for(n=0;n&8;n++)printf(f,34,x[n],34),puts(&z);
for(n=3;n&8;n++)puts(x[n]);}
char *text [] = {
"char *text [] = {",
"main () {",
" char newline = 012, quote = 042, escape = 0134, *p, **p;",
" printf (\"%s%c\", *text, newline);",
" for (pp = * pp++) {",
" printf (\" %c\", quote);",
" for (p = * *p; p++) {",
" if (*p == quote)",
" putchar (escape);",
" putchar (*p);",
" printf (\"%c,%c\", quote, newline);",
" for (pp = text + 1; * pp++);",
char newline = 012, quote = 042, escape = 0134, *p, **
printf ("%s%c", *text, newline);
for (pp = * pp++) {
printf (" %c", quote);
for (p = * *p; p++) {
if (*p == quote)
putchar (escape);
putchar (*p);
printf ("%c,%c", quote, newline);
for (pp = text + 1; * pp++)
printf ("%s%c", *pp, newline);
#include&stdio.h&
char *a[] = {"\"};\n\n",
"main() {\n",
" int i=0; char *b;\n",
" printf(\"#include&stdio.h&\\nchar
*a[] = {\\\"\");\n",
" while(*a[i]) {\n",
" for(b=a[i];*b;b++)\n",
" switch(*b) {\n",
" case '\\n': printf(\"\\\\n\");\n",
" case '\\\\': case '\\\"': putchar('\\\\'); \n",
" default: putchar(*b);\n",
" printf(\"\\\",\\n\\t\\\"\"); \n",
" i++;\n",
" i=0;\n",
" while(*a[i]) {printf(a[i]);i++;}\n",
int i=0; char *b;
printf("#include&stdio.h&\nchar *a[]
while(*a[i]) {
for(b=a[i];*b;b++)
switch(*b) {
case '\n': printf("\\n");
case '\\': case '\"': putchar('\\');
default: putchar(*b);
printf("\",\n\t\"");
while(*a[i]) {printf(a[i]);i++;}
char s[] = "\";\n\
main ()\n\
{ printf (\"char s[] = \\\"\");\n\
for (i=0; s[i]; i++)\n\
{ switch (s[i]) {\n\
case '\\n': printf (\"\\\\n\\\\\\n\");\n\
case '\\\\': printf (\"\\\\\\\\\");\n\
case '\\\"': printf (\"\\\\\\\"\");\n\
default: printf (\"%c\", s[i]);}\n\
printf (\"%s\",s); }\n\
{ printf ("char s[] = \"");
for (i=0; s[i]; i++)
{ switch (s[i]) {
case '\n': printf ("\\n\\\n");
case '\\': printf ("\\\\");
case '\"': printf ("\\\"");
default: printf ("%c", s[i]);}
printf ("%s",s); }
#include stdio
char *a[27];
a[0] = "#include stdio";
a[1] = "";
a[2] = "main()";
a[3] = " {";
a[4] = "";
a[5] = " char *a[27];";
a[6] = " for (i = 0; i &= 5; i++) printf
(\"\%s\\n\", a[i]);";
a[7] = " for (i = 0; i &= 26; i++) printslash (\"
a[\%d] = \\\"\%s\\\";\\
n\", i, a[i]);";
a[8] = " for (i = 6; i &= 26; i++) printf
(\"\%s\\n\", a[i]);";
a[9] = " }";
a[10] = "";
a[11] = "printslash (string, a1, a2)";
a[12] = "char *string, *a2;";
a[13] = "int a1;";
a[14] = " {";
a[15] = " char b[100];";
a[16] = "";
a[17] = " int j = 0;";
a[18] = " for (i = 0; i & strlen(a2); i++)";
a[19] = " {";
a[20] = " char ch = a2[i];";
a[21] = " if ((ch == '\\\\') || (ch == '\\\%') || (ch == '\\\"'))
= '\\\\';";
a[22] = " b[j++] =";
a[23] = " }";
a[24] = " b[j] = '\\0';";
a[25] = " printf (string, a1, b);"; a[26] = " }";
for (i = 0; i &= 5; i++) printf ("%s\n",
for (i = 0; i &= 26; i++) printslash (" a[%d] =
\"%s\";\n", i, a[i]);
for (i = 6; i &= 26; i++) printf ("%s\n",
printslash (string, a1, a2)
char *string, *a2;
char b[100];
int j = 0;
for (i = 0; i & strlen(a2); i++)
char ch = a2[i];
if ((ch == '\\') || (ch == '\%') || (ch == '\"')) b[j++] =
b[j] = '\0';
printf (string, a1, b);
#include &stdio.h&
char* a = ";
void main() {
printf(\"#include &stdio.h&\\nchar* a
putchar(34);
for (c = c[0] != 0; c++) {
if (c[0] == 34) { putchar(92); putchar(34); }
else if (c[0] == 92) { putchar(92); putchar(92); }
else putchar(c[0]);
putchar(34);
printf(\"%s\", a);}
void main() {
printf("#include &stdio.h&\nchar* a =
putchar(34);
for (c = c[0] != 0; c++) {
if (c[0] == 34) { putchar(92); putchar(34); }
else if (c[0] == 92) { putchar(92); putchar(92); }
else putchar(c[0]);
putchar(34);
printf("%s", a);}
char *s= "char *s= \"%s\";\n\n\n\nchar *q(char *s) {\n char *r =
(char *) malloc (strlen(s)*4 + 1);\n int i, j = 0;\n\n for (i=0; i
& strlen(s); i++) {\n switch (s[i]) {\n case '\\\\':
r[j++] = '\\\\'; r[j++] = '\\\\';\n case '\\\"': r[j++] =
'\\\\'; r[j++] = '\\\"';\n case '\\n': r[j++] = '\\\\';
r[j++] = 'n';\n default: r[j++] = s[i];\n }\n }\n
r[j++] = '\\0';\\n}\n\nmain() {\n printf(s,
q(s));\n}\n";
char *q(char *s) {
char *r = (char *) malloc (strlen(s)*4 + 1);
int i, j = 0;
for (i=0; i & strlen(s); i++) {
switch (s[i]) {
case '\\': r[j++] = '\\'; r[j++] = '\\';
case '\"': r[j++] = '\\'; r[j++] = '\"';
case '\n': r[j++] = '\\'; r[j++] = 'n';
default: r[j++] = s[i];
r[j++] = '\0';
printf(s, q(s));
main(argc, argv)
char * dna =
"\n\nmain(argc, argv)\n\
char**\n{\n char * dna =\n\nZ;\n\n\n express_stri\
ng(dna);\n exit(0);\n}\n\n\n\nexpress_string(str)\n char*\n{\n
char* ptr \
=\\n int is_quoted = 0;\n\n while(ch = *p\
tr++)\n {\n\n if(ch == 'Z' &&
!is_quoted)\n\t{\n\t \
int count = 1;\n\t char* ptr =\n\\n\t pu\
tchar('\"');\n\t while(ch = *ptr++)\n\t {\n\t swit\
ch(ch)\n\t {\n\t\tcase '\\n': printf(\"\\\\n\"); coun\
t +=2;\n\t\tcase '\\t': printf(\"\\\\t\"); count +=\
2;\n\t\tcase '\\\\': printf(\"\\\\\\\\\"); count +=2\
;\n\t\tcase '\"': printf(\"\\\\\\\"\"); count +=2; \
\n\t\tdefault: putchar(ch); count +=1;\n\t\
}\n\t if(count &= 59)\n\t\t{
printf(\"\\\\\\n\")\
;\n\t\t count = 0;\n\t\t}\n\t }\n\t putchar('\"');\n\t\
}\n\n else putchar(ch);\n is_quoted = ( ch == '\\\
'');\n }\n}\n";
express_string(dna);
express_string(str)
char* ptr =
int is_quoted = 0;
while(ch = *ptr++)
if(ch == 'Z' && !is_quoted)
int count = 1;
char* ptr =
putchar('"');
while(ch = *ptr++)
switch(ch)
case '\n': printf("\\n"); count +=2;
case '\t': printf("\\t"); count +=2;
case '\\': printf("\\\\"); count +=2;
case '"': printf("\\\""); count +=2;
default: putchar(ch); count +=1;
if(count &= 59)
{ printf("\\\n");
count = 0;
putchar('"');
else putchar(ch);
is_quoted = ( ch == '\'');
#include &stdio.h&
void main(){
int i=0,j=0;
char str[500]={"#include
&stdio.h&\n\
void main(){\n\
int i=0,j=0;\n\
char str[500]={\"y\"};\n\
while(str[i] != 0){\n\
if(str[i] == 0x79){\n\
while(str[j] != 0){\n\
if(str[j] == 0x0a){\n\
putchar(0x5c);\n\
putchar(0x6e);\n\
putchar(0x5c);\n\
if(str[j] == 0x22){\n\
putchar(0x5c);\n\
putchar(str[j++]);\n\
else putchar(str[i++]);\n\
while(str[i] != 0){
if(str[i] == 0x79){
while(str[j] != 0){
if(str[j] == 0x0a){
putchar(0x5c);
putchar(0x6e);
putchar(0x5c);
if(str[j] == 0x22){
putchar(0x5c);
putchar(str[j++]);
else putchar(str[i++]);
#define MAXA 100
#define MAXB 47
#define CHANGE 18
#include &stdio.h&
char slosh = '\\';
int i,j,k;
char str[MAXB][MAXA];
sprintf(str[0],"");
sprintf(str[5],"");
sprintf(str[6],"#define MAXA 100");
sprintf(str[7],"#define MAXB 47");
sprintf(str[8],"#define CHANGE 18");
sprintf(str[9],"#include
&stdio.h&");
sprintf(str[10],"");
sprintf(str[11],"char slosh = '\\';");
sprintf(str[12],"");
sprintf(str[13],"main()");
sprintf(str[14],"{");
sprintf(str[15]," int i,j,k;");
sprintf(str[16]," char str[MAXB][MAXA];");
sprintf(str[17],"");
sprintf(str[18]," for (j = 0; j & CHANGE;
sprintf(str[19]," {");
sprintf(str[20]," pr(str[j],0);");
sprintf(str[21]," printf(\"\\n\");");
sprintf(str[22]," }");
sprintf(str[23]," for (j = 0; j & MAXB;
sprintf(str[24]," {");
sprintf(str[25]," printf(\" sprintf(str[%%d],\\\"\",j);");
sprintf(str[26]," pr(str[j],0);");
sprintf(str[27]," printf(\"\\\");\");");
sprintf(str[28]," printf(\"\\n\");");
sprintf(str[29]," }");
sprintf(str[30]," for (j = CHANGE; j & MAXB;
sprintf(str[31]," {");
sprintf(str[32]," pr(str[j],1);");
sprintf(str[33]," printf(\"\\n\");");
sprintf(str[34]," }");
sprintf(str[35],"}");
sprintf(str[36],"pr(str,asis)");
sprintf(str[37],"char str[MAXA];");
sprintf(str[38],"");
sprintf(str[39],"{");
sprintf(str[40],"");
sprintf(str[41]," for (j = 0; (j & MAXA)
&& (str[j] != '\\0');
sprintf(str[42]," if ((asis == 0)
&& ((str[j] == slosh) ||
(str[j] == '\"')))");
sprintf(str[43]," printf(\"%%c%%c\",slosh,str[j]);");
sprintf(str[44]," else if ((asis == 0)
&& (str[j] == '%%'))
printf(\"%%%%%%%%\");");
sprintf(str[45]," else printf(\"%%c\",str[j]);");
sprintf(str[46],"}");
for (j = 0; j & CHANGE; ++j)
pr(str[j],0);
printf("\n");
for (j = 0; j & MAXB; ++j)
printf(" sprintf(str[%d],\"",j);
pr(str[j],0);
printf("\");");
printf("\n");
for (j = CHANGE; j & MAXB; ++j)
pr(str[j],1);
printf("\n");
pr(str,asis)
char str[MAXA];
for (j = 0; (j & MAXA)
&& (str[j] != '\0'); ++j)
if ((asis == 0) && ((str[j] ==
slosh) || (str[j] == '"')))
printf("%c%c",slosh,str[j]);
else if ((asis == 0) && (str[j] ==
'%')) printf("%%%%");
else printf("%c",str[j]);
#include "stdio.h"
char *stack[2000], buf[2000], chrtab[128][2], *defns[128];
char dna[ ]="stdio.h_X#include X\"__\n\
char 4_Cstack_Sbuf_Bchrtab[4]_Hdefns[4]_V5[4]_]5,
4_,4;_;*4_*_L\n\
_/SK]*BK],LH2]LV*,,C;__5==4_%5=4_=dna_DD
]@\"=C;__54_.copy(4)_K\n\
_/strlen(4)_Astrcpy(54,)_E4++_^5+4_+200_X'4'_'5*^4=_Z5;/4._!for
(7;6;5)4_F\n\
4_G{/4/}/_}return(4);/_R(char`*)malloc(4)_M\\\\_$`\"'_Y\n\
_/5 || 4_|
c*t^*c^*=Yc*%$'c*%|t$'ZG\\n.'c*%ttt\\n.\\.\"EA+=G;!}F_W\n\
_/cK*Cc*Ct*q*,CqtXcA+M==!tYZ!W!tYZ.t0Z!qR!}!__(4)_~\n\
_/construct(4)_Iarg_J4**_$int 4_Nswitch(5)4}_Odefault:
4_P5-4_-p1-~*_Q\n\
_/break_Ucase 5:
4;/U_:5&4_&5&4_&5
4_&4*8'&4*3'&&_?else
4_XqB=Jp=!_W\n\
_/Wtc*V=t*t^t?kpt*-3'+=~J&Jk=Gqqqk*EA+=!;}Gqt*ZX;.}F!q*0=.pJ=!pBA1+MZBE!;_W\n\
_/c*``'p*^ ^c.*H=:YQQK=:!`@'pDZ:!c?p*^c*H=U!;}GP!W.O_W\n\
_/n0=kS=,kp&nnk*^A+=4F_U
Uqn1+M=!qn+k*EU!qR!_O\n\
_/cI*Cc*CJ$p$,k$,t*,q*,CnN!pS=c*c^W}F!O.}!__\n\
_/nH5]4=_Ostrncpy(654,,)_Eputs(4)_P923+_T4t.*T%_T\n\
_/xt=D=t*t^ Tqtx-1+M=qxtx-E!qx-t+~*0=!
^TqIPG!t*VqI=X!xt1+=!;}G}F_Q\n\
_/main()/t*x*,q*,CnN!n0=nL&n^0nO10O!nVnH=!;}F!Q.}__";
char *copy(c)
char *t, *q;
q=t=(char*)malloc(200+strlen(c));
for ( ;*c;*t++=*c++){
if ('"'==*c || '\\'==*c) *t++='\\';
if ('\n'==*c) t=t+strlen(strcpy(t, "\\n\\")); }
return(q);
char *construct(c)
char **arg, **p, **k, *t, *q;
for (p=*c;c++){
switch(*c){
case '`': *p++=chrtab[* ++c];
case '"': *(p-1)=copy(*(p-1));
case '@': *p++=
default: if (*c&'8'
&& *c&'3') {
*p++=chrtab[*c];
for (t=defns[*c];*t;t++){
if (*t&'8' &&
if ((k=p-*t+'3')&arg) arg=k;
q=q+strlen(strcpy(q, *k));
else *q++=*t;
strcpy(*p++=(char*)malloc(strlen(buf)+1), buf); }
for (n=0, k=k&p;n=n+strlen(*k++)) ;
q=(char*)malloc(n+1);
for (n=0, k=k&p;n=n+strlen(*k++))strcpy(q+n,
*k); return(q);
char *t, *x, *q;
for (n=0;n&128;n++){
chrtab[n][0]=n;
chrtab[n][1]=0;
defns[n]=chrtab[n];
for (x=t=*t;t++){
if (* t==92+3) {
q=(char*)malloc(t-x+1);
strncpy(q, x, t-x);
*(q-x+t)=0;
if (* ++t==92+3) puts(construct(q));
else defns[*t]=construct(q);
#include&stdio.h&
main(){char*c="\\\"#include&stdio.h&%cmain(){char*c=%c%c%c%.102s%cn%c;printf(c+2,c[102],c[1],*c,*c,c,*c,c[1]);exit(0);}\n";printf(c+2,c[102],c[1],*c,*c,c,*c,c[1]);exit(0);}
g(char *s1,char *s2){ printf(s1); putchar(34); printf(s1);
putchar(34); putchar(44); putchar(34); printf(s2); putchar(34);
printf(s2); putchar(10);}main () { g("g(char *s1,char *s2){
printf(s1); putchar(34); printf(s1); putchar(34); putchar(44);
putchar(34); printf(s2); putchar(34); printf(s2); putchar(10);}main
() { g(",");}");}
#define D(x) char*t=#x;x
D(int main(int c,char**v){printf("#define D(x)
char*t=#x;x\nD(%s)\n",t);})
main(){char*s="main(){char*s=%c%s%c;%cprintf(%c%s%c,34,s,34,10,34,s,34,10);}%c";
printf("main(){char*s=%c%s%c;%cprintf(%c%s%c,34,s,34,10,34,s,34,10);}%c",34,s,34,10,34,s,34,10);}
char*f="main(){putchar('c');putchar('h');putchar('a');putchar('r');putchar('*');putchar('f');putchar('=');putchar(34);printf(f);putchar(34);putchar(';');putchar(10);printf(f);putchar(10);}";
main(){putchar('c');putchar('h');putchar('a');putchar('r');putchar('*');putchar('f');putchar('=');putchar(34);printf(f);putchar(34);putchar(';');putchar(10);printf(f);putchar(10);}
char*f="char*f=;main(){f[7]=0;printf(f);putchar(34);f[7]=';';printf(f);putchar(34);f[8]=0;printf(&f[7]);f[8]='m';putchar(10);printf(&f[8]);putchar(10);}";
main(){f[7]=0;printf(f);putchar(34);f[7]=';';printf(f);putchar(34);f[8]=0;printf(&f[7]);f[8]='m';putchar(10);printf(&f[8]);putchar(10);}
char a='"';char b='\n';char c='\\';
char*f="char a='%c';char b='%cn';char
c='%c%c';&#65533;har*f=%c%s%c;%cmain(){printf(f,a,c,c,c,b,a,f,a,b,b);}%c";
main(){printf(f,a,c,c,c,b,a,f,a,b,b);}
char*lines[]={
"char*lines[]={",
"%c%s%c%c%c",
"main(){",
"puts(lines[0]);",
"for(idx=0;lines[idx]!=0;idx++){",
"printf(lines[1],34,lines[idx],34,',',10);",
"puts(lines[2]);",
"for(idx=3;lines[idx]!=0;idx++){",
"puts(lines[idx]);",
puts(lines[0]);
for(idx=0;lines[idx]!=0;idx++){
printf(lines[1],34,lines[idx],34,',',10);
puts(lines[2]);
for(idx=3;lines[idx]!=0;idx++){
puts(lines[idx]);
void a(char*b,int d,int e,int
f){char*c=b;for(;*c;c++){if(!d&*c==68)putchar(
92),putchar('\n');if(!d&*c==92)putchar(92);if(*c==d)a(b,0,0,0);else
*c==e?34:*c==f?'\n':*c);}}main(){char p[]=
"void a(char*b,int d,int e,int
f){char*c=b;for(;*c;c++){if(!d&*c==68)putchar(\
D92),putchar('\\n');if(!d&*c==92)putchar(92);if(*c==d)a(b,0,0,0);else
D*c==e?34:*c==f?'\\n':*c);}}main(){char p[]=\
DCAC;a(p,65,67,68);}";a(p,65,67,68);}
char *instructions[] = {
"#include &stdio.h&",
"void copier( s)",
"\tchar *s[];",
"\tchar **p, *q;",
"\tfputs( \"char *instructions[] = {\\n\", stdout);",
"\tfor( p = *p; p++)",
"\t\tfputs( \"\\t\\\"\", stdout);",
"\t\tfor( q = *p; *q; q++)",
"\t\t\tswitch(*q)",
"\t\t\t{",
"\t\t\tcase '\\t':",
"\t\t\t\tfputs( \"\\\\t\", stdout);",
"\t\t\t\",
"\t\t\tcase '\\\\':",
"\t\t\t\tfputs( \"\\\\\\\\\", stdout);",
"\t\t\t\",
"\t\t\tcase '\"':",
"\t\t\t\tfputs( \"\\\\\\\"\", stdout);",
"\t\t\t\",
"\t\t\tcase '\\n':",
"\t\t\t\tfputs( \"\\\\n\", stdout);",
"\t\t\t\",
"\t\t\tdefault:",
"\t\t\t\tfputc( *q, stdout);",
"\t\t\t\",
"\t\t\t}",
"\t\tfputs( \"\\\",\\n\", stdout);",
"\tfputs( \"\\t0\\n};\\n\", stdout);",
"void interp( s)",
"\tchar *s[];",
"\tchar **p =",
"\tfor( p = *p; p++)",
"\t\tfputs( *p, stdout);",
"\t\tfputc( '\\n', stdout);",
"int main( ac, av)",
"\tchar **",
"\tcopier( instructions);",
"\tinterp( instructions);",
#include &stdio.h&
void copier( s)
char *s[];
char **p, *q;
fputs( "char *instructions[] = {\n", stdout);
for( p = *p; p++)
fputs( "\t\"", stdout);
for( q = *p; *q; q++)
switch(*q)
case '\t':
fputs( "\\t", stdout);
case '\\':
fputs( "\\\\", stdout);
fputs( "\\\"", stdout);
case '\n':
fputs( "\\n", stdout);
fputc( *q, stdout);
fputs( "\",\n", stdout);
fputs( "\t0\n};\n", stdout);
void interp( s)
char *s[];
char **p =
for( p = *p; p++)
fputs( *p, stdout);
fputc( '\n', stdout);
int main( ac, av)
copier( instructions);
interp( instructions);
main() {char *p,a;printf(p="main() {char
*p,a;printf(p=%c%s%c,a='",a='"',p,
a);printf(p="%c',p,&#65533;);printf(p=%c%s%c%c,a,10,a,p,a,10,a,%c%s%c,a,10);}%c"
,a,10,a,p,a,10,a," *** Email: xxxxxxx@xxx.xx *** IRC: Zuikkis ***
char*a??(??)=??&
"??=include",
"??=include",
"??=define o stdout",
"??=case",
"??=define s(p)fputs(p,o);",
"??=define c(p)fputc(p,o);",
"void t(p,f)char*p;????/")b'??(':s(??/"???/??/?(??/")b'??)'",
":s(??/"???/??/?)??/")b'??/??/??/??/':f&&s(??/"???/??/?/??/")",
"s(??/"???/??/?/??/")b'??/??/n':if(f)s(??/"???/??/?/n??/")",
"else case'??/"':if(f)s(??/"???/??/?/??/??/??/"??/")",
default:c(*p)??&??&??&main()??;??/",0);for(p=a",
";*p;p++)t(*p,0);exit(!ferror(o)&&",
"!fclose(o)?EXIT_SUCCESS",
":EXIT_FAILURE);",
??=include
??=include
??=define o stdout
??=define s(p)fputs(p,o);
??=define c(p)fputc(p,o);
t(p,f)char*p;??':s("???/?&")b'??(':s("???/?(")b'??)'
:s("???/?)")b'??/??/':f&&s("???/?/")
s("???/?/")b'??/n':if(f)s("???/?/n")
else case'"':if(f)s("???/?/??/"")
default:c(*p)??&??&??&main()??;",0);for(p=a
;*p;p++)t(*p,0);exit(!ferror(o)&&
!fclose(o)?EXIT_SUCCESS
:EXIT_FAILURE);
char q='"',*a="*/char q='%c',*a=%c%s%c*/};)b(]d[b=]d-852
[b)--d()q,a,q,q,2+a,b(ftnirps{)(031=d
]952[b,",b[259];
d=130;main(){sprintf(b,a+2,q,q,a,q);while(d--)b[258-d]=b[d];puts(
char q='"',*a="*/char
q='%c',*a=%c%s%c*/};)b(]d[b=]d-472[b)--d()q,a,q,q,2+a,b()b(stup{)(731=d
]572[b,",b[275];int
d=137;main(){puts(b);sprintf(b,a+2,q,q,a,q);while(d--)b[274-d]=b[d];puts(b);}
q='"',*a="*/char
q='%c',*a=%c%s%c*/};)]d-062[b=]d[b(rahctup)--d()q,a,q,q,2+a,b(ftnirps{)(ni
162=]162[b,",b[261];int
d=261;main(){sprintf(b,a+2,q,q,a,q);while(d--)p
utchar(b[d]=b[260-d]);}
main(){char*a="main(){char*a=c%s%c%,q='c%';printf(a+118,q,q,a,q,q);}main(){char*a=%c%s%c,q='%c';printf(a+118,q,q,a,q,q);}",q='"';printf(a+118,q,q,a,q,q);}
main(){char*a="main(){char*a=c%s%c%,q='c%';printf(a+49,q,q,a,q);};)q,a,q,q,94+a('%c'=q,%c%s%c=a*rahc{)(niam",q='"';printf(a+49,q,q,a,q);}
main(){char*a="main(){char*a=c%s%c%;printf(a+42,34,a,34);};)43,a,43,24+a(%c%s%c=a*rahc{)(niam";printf(a+42,34,a,34);}
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。}

我要回帖

更多关于 html换行符 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信