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> #defineTRUE1 #defineMAX7985//词库中的单词总数 typedefstructword { charchinese[MAX]; charenglish[MAX]; }Word; voidgetWord(Word*t); voidsearchWord(Word*t,char*s); intflag; intmain(void) { charname[20]; Word*word; word=(Word*)malloc(MAX*sizeof(Word)); if(word==NULL) { printf("outofmemory!\n"); exit(EXIT_FAILURE); } getWord(word); while(TRUE) { printf("请输入要查询的单词:"); scanf("%s",name); flag=0; searchWord(word,name); } system("pause"); return0; } voidgetWord(Word*t) { inti; FILE*input; input=fopen("dictionary.txt","r"); if(NULL==input) { perror("cannotopenthefile!\n"); exit(EXIT_FAILURE); } for(i=0;i<MAX;i++) { fscanf(input,"%s\t%s",&t[i].english,&t[i].chinese); } fclose(input); } voidsearchWord(Word*t,chars[]) { intfont,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; } elseif(cmp>0) { font=mid+1; mid=(font+rear)/2; } elseif(cmp<0) { rear=mid-1; mid=(font+rear)/2; } } if(0==flag) { printf("\n词库中没有此单词!\n\n"); } } 感谢贺利坚老师提供的词库(词库下载) |
简易电子词典
最新推荐文章于 2018-09-19 16:13:58 发布