| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1972 人关注过本帖
标题:[贺新年]打造你自己的中文版编译器--MYTC
只看楼主 加入收藏
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
结帖率:92.86%
收藏
 问题点数:0 回复次数:10 
[贺新年]打造你自己的中文版编译器--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
qwshaoye
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2004-12-20
收藏
得分:0 
有创意,强烈支持!
2004-12-27 01:40
ysfabm
Rank: 1
等 级:新手上路
威 望:1
帖 子:274
专家分:0
注 册:2004-11-9
收藏
得分:0 
很有意思,果然与众不同!支持顶!

精诚所至,
       金石为开!
      PLM技术社区: [url=http://www.]www.[/url] 最专业的PLM技术讨论社区。
2004-12-27 08:05
忆楠
Rank: 1
等 级:新手上路
帖 子:721
专家分:0
注 册:2004-7-5
收藏
得分:0 
你帮我做一个吧````   要阿拉伯文的

点 鼠 标 , 救 饥 民 http://www./
2004-12-27 18:16
FlyHorse
Rank: 1
等 级:新手上路
帖 子:73
专家分:0
注 册:2004-11-6
收藏
得分:0 

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

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


#include #include void main(void) { cprintf(\"I love program.\"); getch(); }
2004-12-27 21:37
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
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
呵呵~~~我喜欢~~我怎么就没想到呢~~~~~~~

淘宝杜琨
2004-12-28 11:16
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
靠!我发的贴子那次不是被你神骂得狗血喷头?这次竟然能得到神的回贴,理当加倍努力!

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2004-12-28 11:55
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
我说没想到是说没想到用C语言来写
其实我用DEBUG一样可以改~哼~

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

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


淘宝杜琨
2004-12-28 23:35
快速回复:[贺新年]打造你自己的中文版编译器--MYTC
数据加载中...
 
   



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

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