如何用c语言做一个简单的英语词典

Python09

如何用c语言做一个简单的英语词典,第1张

//新建一个字典文本文件,命名为:dict.dat,内容格式如下: 或下载一个也可

//abandon v.抛弃,放弃

//abandonment n.放弃

//abbreviation n.缩写

//abeyance n.缓办,中止

//abide v.遵守

//ability n.能力

//able adj.有能力的,能干的

//abnormal adj.反常的,变态的

//aboard adv.船(车)上

//abolish v.废除,取消

//******************************

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

struct NODE

{

char e[20]

char c[50]

struct NODE* pnext

}

struct NODE* pN

struct NODE* pHead=NULL

struct NODE* pNode=NULL

struct NODE* pNext=NULL

struct NODE* pEnd=NULL

FILE* open_dict()

{

FILE *fp

if((fp=fopen("dict.dat","r"))==NULL)

{

printf("open dict error!\n")

return NULL

}

return fp

}

int getdata_from_dict(FILE* fp)

{

int i,j

char buf[50]

while(1)

{

pN=(struct NODE*)malloc(sizeof(struct NODE))

memset(pN->c,'\0',50)

memset(pN->e,'\0',20)

pN->pnext=NULL

if(fgets(buf,50,fp)==NULL)

{

fclose(fp)

break

}

sscanf(buf,"%s %s",pN->e,pN->c)

if(pHead==NULL)

{

pHead=pN

pNode=pN

continue

}

pNode->pnext=pN

pNode=pN

pEnd=pN

}

return 1

}

void write_dict()

{

FILE* fp=NULL

if((fp=fopen("dict.dat","w"))==NULL)

{

printf("open dict error!\n")

return

}

char buf[100]={'\0'}

pNode=pHead

while(1)

{

if(pNode==NULL)

{

break

}

fprintf(fp,"%s %s\n",pNode->e,pNode->c)

pNode=pNode->pnext

}

fclose(fp)

}

void del(char* char_del)

{

struct NODE* pDel=pHead

if(strcmp(pDel->e,char_del)==0)

{

pHead=pHead->pnext

write_dict()

return 

}

while(1)

{

if(strcmp(pDel->pnext->e,char_del)==0)

{

if(pDel->pnext->pnext!=NULL)

{

pDel->pnext=pDel->pnext->pnext

}

else

{

pDel->pnext=NULL

}

write_dict()

return 

}

else

{

pDel=pDel->pnext

if(pDel==NULL)

{

break

}

}

}

printf("\n未找到该单词!\n")

return

}

void add(char* char_add, char* char_add_chs)

{

pN=(struct NODE*)malloc(sizeof(struct NODE))

memset(pN->c,'\0',50)

memset(pN->e,'\0',20)

pN->pnext=NULL

strcpy(pN->e,char_add)

strcpy(pN->c,char_add_chs)

pEnd->pnext=pN

pEnd=pN

pNode=pN

write_dict()

}

int main(int argc, char *argv[]) 

{

FILE* fp=NULL

fp=open_dict()

if(fp==NULL)

{

printf("读取字典失败! 程序将退出!")

getchar()

return 1

}

getdata_from_dict(fp)

fclose(fp)

char buf[50]={'\0'}

while(1)

{

printf("\n\n{输入quit: 即退出, 输入del: 即删除, 输入add: 即增加}\n请输入英文单词 : ")

fflush(stdin)

scanf("%s",buf)

if(strcmp(buf,"quit:")==0)

{

break

}

else if(strcmp(buf,"del:")==0)

{

char char_del[20]={'\0'}

printf("请输入要删除的单词:")

fflush(stdin)

scanf("%s",char_del)

del(char_del)

continue

}

else if(strcmp(buf,"add:")==0)

{

char char_add[20]={'\0'}

char char_add_chs[100]={'\0'}

printf("\n请输入要增加的单词:")

fflush(stdin)

scanf("%s",char_add)

printf("\n请输入中文意思:")

fflush(stdin)

scanf("%[^\n]",char_add_chs)

add(char_add,char_add_chs)

continue

}

pNode=pHead

int find=0

while(pNode!=NULL)

{

if(strcmp(pNode->e,buf)==0)

{

printf("\n%s",pNode->c)

find=1

break

}

pNode=pNode->pnext

}

if(find==0)

{

printf("\n未找到!")

}

}

return 0

}

我用VC写了一个

比较简单的

// 词典.cpp : Defines the entry point for the console application.

//

#include "stdafx.h"

#include <windows.h>

#include <stdio.h>

#include <malloc.h>

#include <winbase.h>

#include <process.h>

void Search()

{

char temp[100]

char buffer[2]

char result[100]

printf("请输入要查询的单词:\n")

scanf("%s",&temp)

buffer[0]=temp[0]

buffer[1]='\0'

int ret=GetPrivateProfileString(buffer,temp,0,result,100,"./date.ini")

if(ret>0)

printf("%s\n\n\n\n\n",result)

else

printf("对不起,没有您要查找的单词.\n\n\n\n\n")

}

void InsertItem()

{

char temp[100]

char buffer[2]

char result[100]

printf("请输入要插入的单词:\n")

scanf("%s",&temp)

printf("请输入单词的解释:\n")

getchar()

scanf("%s",&result)

buffer[0]=temp[0]

buffer[1]='\0'

int ret=WritePrivateProfileString(buffer,temp,result,"./date.ini")

if(ret=0)

printf("插入失败。\n\n\n\n\n")

else

printf("插入成功。\n\n\n\n\n")

}

int main(int argc, char* argv[])

{

int index

main:

printf("**************MENU***************\n\n")

printf(" 1 英译汉\n")

// printf("2 汉译英\n")

printf(" 2 插入新的词条\n")

// printf(" 3 删除已有词条\n")

printf(" 3 清空屏幕\n")

printf(" 4 退出\n\n")

printf("**********************************\n")

do{

printf("请选择操作(1~4):\n")

scanf("%d",&index)/*输入选择项*/

}while(index<0||index>5)/*选择项不在0~4之间重输*/

switch(index)

{

case 1:

Search()

goto main

break

case 2:

InsertItem()

goto main

break

case 3:

system("cls")

goto main

break

case 4:

return 0

break

default:

break

}

return 0

}

输出:

**************MENU***************

1 英译汉

2 插入新的词条

3 清空屏幕

4 退出

**********************************

请选择操作(1~4):

1

请输入要查询的单词:

bad

adj. 劣质的,有害的,坏的,不利的,不健康的,严重的

**************MENU***************

1 英译汉

2 插入新的词条

3 清空屏幕

4 退出

**********************************

请选择操作(1~4):

2

请输入要插入的单词:

cat

请输入单词的解释:

插入成功。

**************MENU***************

1 英译汉

2 插入新的词条

3 清空屏幕

4 退出

**********************************

请选择操作(1~4):

1

请输入要查询的单词:

cat

**************MENU***************

1 英译汉

2 插入新的词条

3 清空屏幕

4 退出

**********************************

请选择操作(1~4):

4

Press any key to continue