编写自己的TXT2EXE
/*最简单的TXT2EXE.EXE的源程序TXT2EXE.CPP
/*编译器是TURBO C++ 2.0
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
/*定义ESC键码,程序中用于退出*/
#define ESC 0x1b
void main(int argc,char *argv[])
{
FILE *fp;
int line=0;
char string[100];
if(argc>1)
{
printf("\n\n Parameter is not needed !\n\n");
printf("\n\n Any key to continue !\n\n");
getch();
}
if((fp=fopen(argv[0],"r"))==NULL)
{
/*打开文件出错处理*/
printf("\n\n File Open Error !\n\n");
printf("\n\n Any key to exit .\n\n");
getch();
exit(0);
}
/*定位文件指针,其中15727L需要自己调整,详见后面说明*/
fseek(fp,15727L,SEEK-SET);
clrscr(); /*清屏幕
while(!feof(fp))
{
/*从文件中读取数据,因为屏幕为80列,因此一次最多读取80个字符*/
fgets(string,80,fp);
/*设置显示文件颜色和屏幕底色,此处设为亮白色和黑色*/
textcolor(WHITE);
textbackground(BLACK);
cprintf("\r%s",string);
line++;
/*设每屏幕为22行正文,满屏后处理*/
if(line==22)
{
line=0; /*行数计数器清0*/
/*隔一个空行后用红色显示提示行*/
textcolor(LIGHTRED);
cprintf("\r\n Any key to next page,ESC to exit");
/*显示一屏后停止,等待下一个命令:任意键看下一屏,ESC退出*/
switch(getch())
{
/*若退出则关闭文件,恢复正常屏幕属性,并清屏*/
case ESC:fclose(fp);textcolor(7);clrscr();exit(0);
/*正常情况下清屏,准备显示下一屏*/
default:clrscr();
}
}
}
fclose(fp);
/*完毕后恢复正常屏幕属性,并清屏*/
textcolor(7);
/*最后一屏不会被立即清掉*/
getch();
clrscr();
return;
}
编译连接此文件,形成TXT2EXE.EXE,在DOS下查看TXT2EXE.EXE的长度,不妨假设为15839字节,回头再将TXT2EXE.CPP中的fseek(fp,15727L,SEEK-SET);语句中的常数改为15839L,重新编译,此时可执行文件长度一般不会变化了,可能就是15839字节。
找一个TXT文件,不妨假设为TEST.TXT,最好每行字符数不要超过80个(从程序中可以看出,fgets函数每次读80个字符,若是某行超过80个字符,会将一个单词分开!)。然后自己编写一个简单的批文件MYBAT.BAT,内容为
@REM MYBAT.BAT的内容
@ECHO OFF
COPY/B TXT2EXE.EXE+TEST.TXT TEST.EXE
REM 立即测试
TEST
运行MYBAT.BAT,即可大功告成!以后要再做其他TXT文件的EXE,可以同法处理。只要将批处理中的TXT文件名字和最后可执行文件的名字改变一下就可以了,TXT2EXE.EXE是通用的。
本TXT2EXE.EXE和汉字TEXT文件结合后,在汉字系统如UCDOS 3.1、SPDOS 5.1支持下也可以显示汉字文件。
上述TXT2EXE.EXE是原理性的,最简单的,若要发展,可以加入Page Up功能用来翻上一页,Home功能用来翻到文件第一页,End功能用来翻页到文件尾。若在文本文件中自己加入某些自定义的控制符,在TXT2EXE中再分别处理,还可以达到特别突出某行的目的(如改用其他颜色),还可以考虑加入鼠标驱动和滚动条。