简易电子词典

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

 

感谢贺利坚老师提供的词库(点击下载词库)

你可能感兴趣的:(C语言,电子词典)