当前位置: 代码迷 >> C语言 >> [贺新年]打造你自己的中文版编译器--MYTC
  详细解决方案

[贺新年]打造你自己的中文版编译器--MYTC

热度:336   发布时间:2004-12-26 23:05:00.0
[贺新年]打造你自己的中文版编译器--MYTC

PS:此只适宜未经加密,压缩的程序,否则,必须先解密解压。

很多人都说E文的TC(其它的也一样)不好用,那么,你有没有想过自己打造一个有自己个性的TC?当然,这里并不是让你去重写一个C的编译器,但是,我们可以打造一个属于自己的TC!

1。可以汉化TC的菜单

2。适当地改一下版权(^_^,自己玩玩而已,不是很过分吧?)

3。再适当地改一下提示语句,

比如:

Error writing output file

我们可以改成:

笨!错了!写不了啊!

是不是很好玩?

4。............(还没想到,有更好的建议,欢迎提讨论)

但是,我得提醒一下:

1。记得随时备份你要汉化的程序,要一小部分一小部分地改,改成功一部分就得备份,不要想一下子put进你的全部数据,要时时记住你在玩火^_^。

2。这是一件非常磨人的工作,你得有很好的耐心才能很好的完成全部的工作。

好了,费话不多说了,下面两个程序是提取TC中ASCII码及放入你修改汉化后的中英的主体程序:

/*提取ASCII*/

/get.c*/

#include <stdio.h> int main(void) { FILE *in, *out; long T=0,T0=0;

char ch; char sun[160],*ptr;

if ((in = fopen("edit1.com", "rb"))== NULL) { printf("打开文件出错!请检查文件是否存在!\n"); return 1; }

if ((out = fopen("edit1.txt", "wt"))== NULL) { printf("不能建立TXT文件!\n"); return 1; }

while (!feof(in)) { ch=fgetc(in); T++; if( ch>=32 && ch<=122 ) { /*fprintf(out,"[%ld]\n",T-1); */ T0=T; ptr=sun; *ptr++=ch; while (!feof(in)) { ch=fgetc(in); T++; if( ch>=32 && ch<=122 )*ptr++=ch; else { *ptr='\0'; if(T-T0>4) { fprintf(out,"{%ld}\n",T0-1); fprintf(out,"原文:{%s}\n译文:{}\n\n",sun); } break; }

} } /*fputc(fgetc(in), out);*/

}

fclose(in); fclose(out); getch(); return 0; }

==========================

/*压入修改*/

/*put.c*/ #include <stdio.h> int main(void) { FILE *in, *out; long T=0; int c=0; char sun[160],sun1[160],temp[160],*ptr,*p;

if ((out = fopen("edit1.com", "rb+"))== NULL) { printf("打开文件出错!请检查文件是否存在!\n"); return 1; }

if ((in = fopen("edit1.txt", "rt"))== NULL) { printf("不能建立TXT文件!\n"); return 1; }

while (!feof(in)) { fscanf(in," {%ld}",&T); fscanf(in," %[^\n]",sun); fscanf(in," %[^\n]",sun1); printf("[%ld]\n%s\n%s\n",T,sun,sun1); if(*(sun1+6)!='}') { c=0; printf("正在写入.......\n"); ptr=temp; p=sun1+6; while(*ptr++=*p++)c++; fseek(out,T,SEEK_SET); fwrite(temp,sizeof(char),c-1,out);

} getch(); }

fclose(in); fclose(out); getch(); return 0; }

只写了一个主体,如果你想更好用,就自己改改吧!

提取出来的数据类似下面:

{232816} 原文:{^_ZY[X} 译文:{}

{232823} 原文:{SQRWV} 译文:{}

{232832} 原文:{^_ZY[} 译文:{} //象这部分杂乱无意义的你尽可放心删去 ..............

...............

{272678} 原文:{Load F3} 译文:{装入文件F3}

{272708} 原文:{Save F2} 译文:{储存文件F2}//一定要等长,多一个,少一个都不行,可以用空格填充

{272721} 原文:{Write to} 译文:{另存为 } //象这样的你要修改的,有两种方法

一,可以复制出一部分的,记住,1。格式不能变 2。修改后的译文与原文件长度一样,一定要一样,{}是标记,是为了用来对照比较之用的。

二,也可以直接用get程式产生文本文件:1.不修改的就不动它,put程式会自行跳过的,2。修改后的译文与原文件长度一样,一定要一样,{}是标记,是为了用来对照比较之用的。

..........

.........

看看,谁的创意好,嘿嘿,专属你自己的TC(或者其它程式)够酷吧?说不定很多人要叫你大侠^_^,还说不定静夜思会加到下载中去,哇,这下子你就名震天下了!

搜索更多相关的解决方案: 新年  MYTC  中文版  编译  

----------------解决方案--------------------------------------------------------

提示一下,刚我写的时候

{272678} 原文:{Load F3} 译文:{装入文件F3}

{272708} 原文:{Save F2} 译文:{储存文件F2}//一定要等长,多一个,少一个都不行,可以用空格填充

{272721} 原文:{Write to} 译文:{另存为 } //象这样的你要修改的,有两种方法

这三处的译文与原文是一样长的(也就是{}是对齐的)但是发上来就变得不一样长了,


----------------解决方案--------------------------------------------------------
有创意,强烈支持!
----------------解决方案--------------------------------------------------------
很有意思,果然与众不同!支持顶!
----------------解决方案--------------------------------------------------------
你帮我做一个吧````   要阿拉伯文的
----------------解决方案--------------------------------------------------------

儿戏了点吧,这样就随便写一个出来,我想看明白的人不多,

PE 格式、反汇编等知识都没有,不是等于空看了。


----------------解决方案--------------------------------------------------------
以下是引用FlyHorse在2004-12-27 21:37:22的发言:

儿戏了点吧,这样就随便写一个出来,我想看明白的人不多,

PE 格式、反汇编等知识都没有,不是等于空看了。

1。儿戏不儿戏,你试试就知道了。

2。上面所说方法与PE,反汇编没任何联系。只要你看懂程序,理解了,按着做就行。

3。再就是补充一点,有 %, &, @....这些特殊符号不要改动,不要移动位置。


----------------解决方案--------------------------------------------------------
呵呵~~~我喜欢~~我怎么就没想到呢~~~~~~~
----------------解决方案--------------------------------------------------------
靠!我发的贴子那次不是被你神骂得狗血喷头?这次竟然能得到神的回贴,理当加倍努力!
----------------解决方案--------------------------------------------------------
我说没想到是说没想到用C语言来写
其实我用DEBUG一样可以改~哼~

还有啊 if ((in = fopen("edit1.com", "rb"))== NULL)
中的edit1.com 好象TC里面没这个东东呀!!!

我觉得你的本意是想说把TC.exe备份成为TC1.EXE,然后再进行操作~~把edit1.com全部要改成TC1.EXE才对


----------------解决方案--------------------------------------------------------