簡易電子詞典

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");  
    } 

 

感謝賀利堅老師提供的詞庫(點擊下載詞庫)

發佈了32 篇原創文章 · 獲贊 58 · 訪問量 16萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章