standardized C self-printer
utzoo!decvax!harpo!ihps3!ihuxr!lew
utzoo!decvax!harpo!ihps3!ihuxr!lew
Wed Nov 3 19:56:48 AEST 1982
char *a[32];
main(){
int i;
a[0]="char *a[32];";
a[1]="main(){";
a[2]="\tint i;";
a[3]="\tfor( i=0 ; i<3 ; i++ ) printf(\"%s\\n\",a[i]);";
a[4]="\tfor( i=0 ; i<32 ; i++ ) quote(i);";
a[5]="\tfor( i=3 ; i<32 ; i++ ) printf(\"%s\\n\",a[i]);";
a[6]="}";
a[7]="quote(i)";
a[8]="int i;";
a[9]="{";
a[10]="\tchar *p;";
a[11]="\tprintf(\"\\ta[%d]=\\\"\",i);";
a[12]="\tfor( p=a[i] ; *p ; p++ ){";
a[13]="\t\tswitch( *p ){";
a[14]="\t\tcase '\\n':";
a[15]="\t\t\tprintf(\"\\\\n\");";
a[16]="\t\t\tbreak;";
a[17]="\t\tcase '\\t':";
a[18]="\t\t\tprintf(\"\\\\t\");";
a[19]="\t\t\tbreak;";
a[20]="\t\tcase '\"':";
a[21]="\t\t\tprintf(\"\\\\\\\"\");";
a[22]="\t\t\tbreak;";
a[23]="\t\tcase '\\\\':";
a[24]="\t\t\tprintf(\"\\\\\\\\\");";
a[25]="\t\t\tbreak;";
a[26]="\t\tdefault:";
a[27]="\t\t\tputchar(*p);";
a[28]="\t\t}";
a[29]="\t}";
a[30]="\tprintf(\"\\\";\\n\");";
a[31]="}";
for( i=0 ; i<3 ; i++ ) printf("%s\n",a[i]);
for( i=0 ; i<32 ; i++ ) quote(i);
for( i=3 ; i<32 ; i++ ) printf("%s\n",a[i]);
}
quote(i)
int i;
{
char *p;
printf("\ta[%d]=\"",i);
for( p=a[i] ; *p ; p++ ){
switch( *p ){
case '\n':
printf("\\n");
break;
case '\t':
printf("\\t");
break;
case '"':
printf("\\\"");
break;
case '\\':
printf("\\\\");
break;
default:
putchar(*p);
}
}
printf("\";\n");
}
More information about the Comp.sources.unix
mailing list