成语大全网 - 成语词典 - 如何用C语言来制作翻译器

如何用C语言来制作翻译器

写了一个简单的翻译器,只提供单词翻译,中文到英文,英文到中文都行,你需要首先进行字典录入。录入以后会自动在目录下生成一个dic.txt文件。

#include "stdio.h"

#include "stdlib.h"

#include "string.h"

#define FILENAME "dic.txt"

struct word //字典结构体

{

char chinese[20]; //中文

char english[20]; //英文

};

/////////////////////////////////////////////////////////////

FILE *FP; //全局文件指针

FILE * FileOpen(char FileName[]) //文件打开函数

{

FILE *fp;

if((fp=fopen(FileName,"r"))==NULL)

{

fp=fopen(FileName,"w");

cout<<"文件打开失败重新创建记录文件";

return fp;

}

fp=fopen(FileName,"a+");

return fp;

}

void FileClose(FILE *fp) //文件关闭函数

{

if(fclose(fp)==0)

cout<<"安全关闭"<<endl;

else

cout<<"文件关闭失败"<<endl;

}

////////////////////////////////////////////////////////////////

void tra1() //中文翻译成英文模块

{

FILE *fp;

if((fp=fopen(FILENAME,"r"))==NULL)

{

printf("文件打开失败!");

}

char tempchinese[20];

word temp;

printf("请输入中文单词:");

scanf("%s",tempchinese);

while(fread(&temp,sizeof(word),1,fp)==1)

{

if(strcmp(temp.chinese,tempchinese)==0)

{

printf("中文:%s 英文:%s \n",temp.chinese,temp.english);

}

}

printf("查找完毕!");

FileClose(fp);

}

//////////////////////////////////////////////

void tra2() //英文翻译成中文模块

{

FILE *fp;

if((fp=fopen(FILENAME,"r"))==NULL)

{

printf("文件打开失败!");

}

char tempenglish[20];

word temp;

printf("请输入英文单词:");

scanf("%s",tempenglish);

while(fread(&temp,sizeof(word),1,fp)==1)

{

if(strcmp(temp.english,tempenglish)==0)

{

printf("中文:%s 英文:%s \n",temp.chinese,temp.english);

}

}

printf("查找完毕!");

FileClose(fp);

}

////////////////////////////////////////////////

void inp() //字典录入模块

{

FP=FileOpen(FILENAME);

word temp;

printf("请输入英文:");

scanf("%s",temp.english);

printf("请输入对应中文:");

scanf("%s",temp.chinese);

fwrite(&temp,sizeof(temp),1,FP);

printf("信息添加完成");

FileClose(FP);

}

////////////////////////////////////////////////

int menu() //主目录模块

{

int choose;

while(choose!=0)

{

printf("\n");

printf("简易中英翻译系统\n");

printf("1、中->英翻译\n");

printf("2、英-中翻译\n");

printf("3、字典录入\n");

printf("输入0退出系统\n");

printf("请输入:");

scanf("%d",&choose);

switch(choose)

{

case 0:return 0;break;

case 1:tra1();break;

case 2:tra2();break;

case 3:inp();break;

}

}

}

///////////////////////////////////////////////////////

void main()

{

menu();

}