//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