| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1972 人关注过本帖
标题:[贺新年]打造你自己的中文版编译器--MYTC
取消只看楼主 加入收藏
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
结帖率:92.86%
收藏
 问题点数:0 回复次数:3 
[贺新年]打造你自己的中文版编译器--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 中文版 编译 
2004-12-26 23:05
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 

提示一下,刚我写的时候

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

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

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

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


九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2004-12-26 23:17
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
以下是引用FlyHorse在2004-12-27 21:37:22的发言:

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

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

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

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

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


九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2004-12-27 21:50
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
靠!我发的贴子那次不是被你神骂得狗血喷头?这次竟然能得到神的回贴,理当加倍努力!

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2004-12-28 11:55
快速回复:[贺新年]打造你自己的中文版编译器--MYTC
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013712 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved