01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
| #include <stdio.h> #include <string.h> #include <stdlib.h> #define TRUE 1 #define MAX 7985 //词库中的单词总数 typedef struct word { char chinese[MAX]; char english[MAX]; }Word; void getWord(Word *t); void searchWord(Word *t,char *s); int flag ; int main(void) { char name[20]; Word *word; word = (Word*)malloc(MAX*sizeof(Word)); if(word == NULL) { printf("out of memory!\n"); exit(EXIT_FAILURE); } getWord(word); while(TRUE) { printf("请输入要查询的单词:"); scanf("%s",name); flag = 0; searchWord(word,name); } system("pause"); return 0; } void getWord(Word *t) { int i; FILE *input; input = fopen("dictionary.txt","r"); if(NULL == input) { perror("can not open the file!\n"); exit(EXIT_FAILURE); } for(i = 0; i < MAX; i++) { fscanf(input,"%s\t%s",&t[i].english,&t[i].chinese); } fclose(input); } void searchWord(Word *t,char s[]) { int font, mid, rear,cmp; font = 0; rear = MAX - 1; mid = (font + rear)/2; while(font <= rear) { cmp = strcmpi(s,t[mid].english); if(0 == cmp) { flag = 1; printf("\n%s\n\n",t[mid].chinese); break; } else if(cmp > 0) { font = mid + 1; mid = (font + rear)/2; } else if(cmp < 0) { rear = mid - 1; mid = (font + rear)/2; } } if(0 == flag) { printf("\n词库中没有此单词!\n\n"); } } 感谢贺利坚老师提供的词库(点击下载词库) |
简易电子词典
最新推荐文章于 2023-10-17 22:09:26 发布