プログラム設計実習レポート-電子辞書

1944 ワード

/*
    :
    :
          。   dictionary.txt ,             ,    8000 ,       ’\t’  。   ,             e[] c[] ,         ,        ,      。     ,          ,    “0000”  ,  :
  :          ,     ,          。

    :
first          , :int first=0;
last           , :int last=num-1;
num      , :num++;
english chinese             , :english[8000][20],chinese[8000][20];

     :0
    : 
*/
#include 
#include 
#include
void open();
int find();
char english[8000][20],chinese[8000][20];
char key[20];
int num=0;
int main()
{
    int n;
    open();
    do
    {
        printf("          (0000  ):");
        n=find();
        if(n==0)
            break;
        else
        {
            if(n==-1)
            {
                printf("   ,     %s   
",key); printf("
"); } else { printf("%s :%s
",key,chinese[n]); printf("
"); } } } while(1); printf(" !
"); return 0; } void open() { FILE *fp; fp=fopen("dictionary.txt","r"); if(fp==NULL) { printf("
"); exit(1); } while(!feof(fp)) { fscanf(fp,"%s%s",english[num],chinese[num]); num++; } fclose(fp); } int find() { int first=0,last=num-1,index=-1,mid; scanf("%s",key); if(strcmp(key,"0000")==0) return 0; else { while(first<=last) { mid=(first+last)/2; if(strcmp(english[mid],key)==0) { index=mid; break; } else if(strcmp(english[mid],key)>0) last=mid-1; else first=mid+1; } } return index; }