#include <stdio.h>
#include <string.h>
int worsNumber = 0;
typedef struct dic
{
char word[20];
char cn[80];
}data;
data dictionarySql[9000];
int loadSql(data *sql,char path[100])
{
int i=0;
FILE *fp=NULL;
fp=fopen("dictionary.txt","r");
while(fscanf(fp,"%s\t%s",(sql+i)->word,(sql+i)->cn)!=EOF)
{
i++;
}
fclose(fp);
printf("共計%d個單詞資料\n",i);
printf("單詞加載完畢,請輸入指令進行操作:\n");
return (i);
}
void printAction()
{
printf("*****************歡迎您使用電子詞典!******************\n");
printf("**************直接輸入要查詢的單詞即可************\n\n\n");
printf("1.英譯漢\t|\n");
printf("2.漢譯英\t|\n");
printf("3.添加單詞資料\t|\n");
printf("4.洗掉單詞資料\t|\n");
printf("5.修正單詞資料\t|\n");
printf("0.退出程式\t|\n");
printf("**********************************************************\n");
}
void dealAction(int action)
{
if(action==1)
{
char word[20];
int pos;
printf("請您輸入要查詢的單詞:");
scanf("%s",word);
pos = searchWord(word);
if(pos!=-1)
printf("單詞\'%s\'的中文意思是: %s\n",word,dictionarySql[pos].cn);
else
printf("對不起,沒有找到您所需要的單詞\n");
}
else if(action==2)
{
int pos;
char cn[80];
printf("請您輸入漢語詞意:");
scanf("%s",cn);
pos = searchCn(cn);
if(pos!=-1)
printf("該翻譯的英語單詞是: %s\n",dictionarySql[pos].word);
else
printf("對不起,沒有找到您所需要的單詞\n");
}
else if(action==3)
{
char word[20];
char cn[80];
printf("請您輸入要補充的單詞:");
scanf("%s",word);
strcpy(dictionarySql[worsNumber].word,word);
printf("請您輸入該單詞漢語翻譯:");
scanf("%s",cn);
strcpy(dictionarySql[worsNumber].cn,cn);
worsNumber++;
saveSql();
printf("補充單詞完成\n");
}
else if(action==4)
{
char word[50];
int pos;
printf("請輸入您要洗掉的單詞:");
scanf("%s",word);
pos = searchWord(word);
if(pos!=-1)
{
char a[5] = "#";
strcpy(dictionarySql[pos].cn,a);
strcpy(dictionarySql[pos].word,a);
saveSql();
printf("已經洗掉該單詞\n");
}
else
printf("對不起,沒有找到您所需要的單詞\n");
}
else if(action==5)
{
char word[50];
int pos;
printf("請輸入您要修正的單詞:");
scanf("%s",word);
pos = searchWord(word);
if(pos!=-1)
{
printf("請輸入單詞漢語翻譯:");
char cn[60];
scanf("%s",cn);
strcpy(dictionarySql[pos].cn,cn);
saveSql();
printf("已經修正該單詞翻譯。\n");
}
else
printf("對不起,沒有找到您所需要的單詞\n");
}
}
int searchWord(char word[20])
{
int low, mid, high;
low = 0;
high = worsNumber;
while(low<=high)
{
mid = (low+high)/2;
if(strcmp(dictionarySql[mid].word,word)>0)
high = mid-1;
else if(strcmp(dictionarySql[mid].word,word)<0)
low = mid+1;
else
{
return mid;
}
}
int i=0;
for(i=0;i<worsNumber;i++)
{
if(strcmp(dictionarySql[i].word,word)==0)
return i;
}
return -1;
}
int searchCn(char cn[80])
{
int i=0;
for(i=0;i<worsNumber;i++)
{
if(strstr(dictionarySql[i].cn,cn)!=NULL)
return i;
}
return -1;
}
void saveSql()
{
FILE *fp=NULL;
fp=fopen("dictionary.txt","w");
int i=0;
for(i=0;i<worsNumber;i++)
{
if(dictionarySql[i].word[0]!='#')
{
fprintf(fp,"%s\t%s\n",dictionarySql[i].word,dictionarySql[i].cn);
}
}
fclose(fp);
}
int main()
{
worsNumber = loadSql(dictionarySql,"dictionary.txt");
int action=-1;
while(action!=0)
{
printAction();
scanf("%d",&action);
dealAction(action);
}
return 0;
}
1.cpp(47) : error C2065: 'searchWord' : undeclared identifier
2.cpp(59) : error C2065: 'searchCn' : undeclared identifier
3.cpp(76) : error C2065: 'saveSql' : undeclared identifier
4.cpp(120) : error C2373: 'searchWord' : redefinition; different type modifiers
5.cpp(146) : error C2373: 'searchCn' : redefinition; different type modifiers
6.cpp(156) : error C2373: 'saveSql' : redefinition; different type modifiers
uj5u.com熱心網友回復:
int loadSql(data *sql,char path[100]);
void printAction();
void dealAction(int action);
int searchWord(char word[20]);
int searchCn(char cn[80]);
void saveSql();
請在程式的最前面加上函式說明,這樣編譯的警告錯誤就沒有了。
uj5u.com熱心網友回復:
int loadSql(data *, char []);
void printAction( void );
void dealAction(int);
int searchWord(char []);
int searchCn(char []);
void saveSql( void );
更一般的函式說明是這樣的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/42712.html
標籤:C語言
下一篇:幫忙看下這個delete例外問題
