/*********************************************************
功能描述:输入一个英文单词,给出中文意思。
参数: words[wordsNum].English 读取保存的单词英文意思
words[wordsNum].Chinese 读取保存的单词中文意思
key 用户输入的内容
high ,low,mid查找单词过程所用的变量
wordsNum 文件中单词数目
***********************************************************/
程序:
#include <stdio.h>
#include<string.h>
#include<stdlib.h>
void search(char*);
//定义单词英汉类型
typedef struct
{
char English[20];
char Chinese[30];
} Word;
Word words[8000]; //将词典数组设置成全局的结构体数组
int wordsNum=0; //词典中的词条数目
/*从文件中将词读到字典中*/
void readDictionary()
{
FILE *fp;
//将文件中的数据读入到对象数组中
fp = fopen("dictionary.txt","r"); //以输入的方式打开文件
if(fp==NULL) //测试是否成功打开
{
printf("dictionary open error!\n");
exit(1);
}
while (!feof(fp))
{
fscanf(fp, "%s%s", words[wordsNum].English, words[wordsNum].Chinese);
++wordsNum;
}
fclose(fp);
}
void search(char *key)
{
int high=wordsNum-1,low=0,mid;
while(low<=high)
{
mid=(high+low)/2;
if(strcmp(words[mid].English,key)==0)
{
printf("%s-->%s\n",key,words[mid].Chinese);
break;
}
else if(strcmp(key,words[mid].English)>0)
low=mid+1;
else if(strcmp(key,words[mid].English)<0)
high=mid-1;
}
if(low>high)
printf("查无此词\n");
printf("\n");
}
int main()
{
readDictionary();
char key[20];
while(1)
{
printf("请输入您要查找英文单词(退出按0000)\n");
scanf("%s",key);
if (strcmp(key,"0000"))
{
search(key);
}
else
{
break;
}
}
printf("欢迎再次使用!\n\n");
return 0;
}
测试: