# include & ltconio.h & gt
# include & ltstdio.h & gt
# include & ltstdlib.h & gt
# include & ltstring.h & gt
#定義szWORD 32
#定義szSTRN 224
# define szITEM sizeof(struct TItem)
char fileDict【SZ strn】;
typedef結構項{
char word【SZ word】;
char mean【SZ strn】;
}項;
fpos_t查找(char *word,char *mean)
{
文件* f = 0;第壹項;
int r = 0;fpos _ t p = 0;
如果(!word)返回0;
f = fopen(fileDict,“Rb“);
如果(!f)返回0;
而(!feof(f))
fgetpos(f & amp;p);
r = fread(& amp;I,szITEM,1,f);
if(r & lt;1)破位;
if(I。word【0】= = 0)繼續;
if(strcmp(I。word,word))繼續;
if(均值)strcpy(均值,即均值);
fclose(f);
返回p+1;
}
fclose(f);
返回0;
}
無效追加(無效)
{
第壹項;文件* f = 0;fpos _ t p = 0;
memset(& amp;I,0,SZ item);
Printf(“請輸入壹個單詞:“);scanf(“% s“,I。word);
p = lookup(I。word,0);
如果(p ){
Printf(“這個詞已經被記錄在字典裏了!\ n ");
返回;
}
Printf(“請輸入定義並按enter結束:“);
fflush(stdin);
gets(I。mean);
f = fopen(fileDict,“ab“);
fwrite(& amp;I,szITEM,1,f);
fclose(f);
Printf(“條目已添加\ n“);
}
無效擦除(無效)
{
第壹項;文件* f = 0;fpos _ t p = 0;
memset(& amp;I,0,SZ item);
Printf(“請輸入壹個單詞:“);scanf(“% s“,I。word);
p = lookup(I。word,0);
if(p = = 0 ){
Printf(“字典裏沒有這個詞的記錄!\ n ");
返回;
}
p-;
memset(& amp;I,0,SZ item);
f = fopen(fileDict,“r b+“);
fset pos(f & amp;p);
fwrite(& amp;I,szITEM,1,f);
fclose(f);
Printf(“條目已刪除\ n“);
}
無效編輯(無效)
{
第壹項;文件* f = 0;fpos _ t p = 0;
memset(& amp;I,0,SZ item);
Printf(“請輸入壹個單詞:“);scanf(“% s“,I。word);
p = lookup(I。word,0);
if(p = = 0 ){
Printf(“字典裏沒有這個詞的記錄!\ n ");
返回;
}
p-;
Printf(“請輸入定義並按enter結束(按enter abort放棄修改):“);
fflush(stdin);
gets(I。mean);
if(strstr(即“abort”))
Printf(“修改中止!\ n ");
返回;
}
f = fopen(fileDict,“r b+“);
fset pos(f & amp;p);
fwrite(& amp;I,szITEM,1,f);
fclose(f);
Printf(“條目已保存\ n“);
}
無效查詢(無效)
{
第壹項;fpos _ t p = 0;
memset(& amp;I,0,SZ item);
Printf(“請輸入壹個單詞:“);scanf(“% s“,I。word);
p =查找(i.word,I。mean);
if(p = = 0 ){
Printf(“字典裏沒有這個詞的記錄!\ n ");
返回;
}
Printf(“條目% s \ n解釋% s“,i.word,I。mean);
}
無效集(無效)
{
int cmd = 0;
Printf(“當前詞典是%s,是否需要更改它(選擇Y或Y進行更改)?”,fileDict);
cmd = getch();
if(cmd = =‘Y‘| | cmd = =‘Y‘){
Printf(“請輸入詞典文件名(包括路徑):“);
scanf(“% s“,fileDict);
Printf(“設置成功!\ n ");
}
}
int main(int argc,char * argv【】)
{
int cmd = 0;
if(argc & gt;1)
strcpy(fileDict,argv【1】);
其他
strcpy(fileDict,“c:\ \ dict . txt“);
/*end if*/
for(;;) {
printf(“\ n \
*********************\n\
* *歡迎使用迷妳詞典!**\n\
*********************\n\
** 0集詞典**\n\
* * 1-查詢術語**\n\
* * 2-新條目**\n\
* * 3-編輯條目**\n\
* * 4-刪除條目**\n\
* * 5-退出字典**\n\
* * * * * * * * * * * * * * * * * * * * * \ n“);
cmd = getch()-“0”;
開關(指令){
情況0:set();打破;
case 1:query();打破;
情況二:append();打破;
情況三:edit();打破;
情況四:erase();打破;
默認值:返回0;
}
}
返回0;
}