#include <string.h>
char *restore(char *src)
{
char *dest, *p;
dest = p = new char[strlen(src) * 2];
*p++ = *src++;
while(*src)
{
switch(*src)
{
case 10:
*p++ = 92;
*p++ = 110;
*p++ = 34;
*p++ = 10;
*p++ = 9;
*p++ = 9;
*p++ = 34;
break;
case 34:
*p++ = 92;
*p++ = 34;
break;
default:
*p++ = *src;
}
src++;
}
*p = 0;
return dest;
}
int main()
{
char str[] =
"#include <stdio.h>/n"
"#include <string.h>/n"
"/n"
"char *restore(char *src)/n"
"{/n"
" char *dest, *p;/n"
" dest = p = new char[strlen(src) * 2];/n"
" *p++ = *src++;/n"
" while(*src)/n"
" {/n"
" switch(*src)/n"
" {/n"
" case 10:/n"
" *p++ = 92;/n"
" *p++ = 110;/n"
" *p++ = 34;/n"
" *p++ = 10;/n"
" *p++ = 9;/n"
" *p++ = 9;/n"
" *p++ = 34;/n"
" break;/n"
" case 34:/n"
" *p++ = 92;/n"
" *p++ = 34;/n"
" break;/n"
" default:/n"
" *p++ = *src;/n"
" }/n"
" src++;/n"
" }/n"
" *p = 0;/n"
" return dest;/n"
"}/n"
"/n"
"int main()/n"
"{/n"
" char str[] = /n"
" /"%s/";/n"
" printf(str, restore(str));/n"
"/n"
"return 0;/n"
"}/n"
"";
printf(str, restore(str));
return 0;
}
[转贴]打印自身的C程序
最新推荐文章于 2023-01-08 18:36:23 发布
实现自身的打印很简单,按如下步骤实现:
1. 写好一个程序;
2. 定义一个字符串str把原来的代码抄进去;不能显示的字符和特殊字符都用%c替换,如换行、引号、
3. 用一个输出语句printf打印str。注意这里,格式控制的时候,10表示换行,34表示",92表示/,110表示n,9表示/t。
随后附另外一个大牛写的,长一点,不过看起来清晰,思路较好:
#include <stdio.h>