c语言做小词典

用C语言做一个简单的英汉词典,要能执行查找.修改.增词.删除。词典内容为:每行对应一个词条,每个词条由两个字符串组成,字符串用若干空格符分开;即,前一个英文,后一个中文释义,用分号做多个释义的分隔符。采用菜单工作方式,在一个操作执行之后,程序询问是否继续执行该操作。如输入Y或y,则重复同一操作,不退回到菜单,如输入其他信息,则回到菜单等待另一次选择,仅当选择退出操作时,程序应询问是否将修改后的内容存盘,并根据用户选择存盘退出或不存盘退出。
下面是我在网上找的一个类似程序...请哪位高手帮忙修改下,谢谢!
http://wenwen.soso.com/z/q171443382.htm

第1个回答  2010-07-06
/*基本的库函数*/
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define szWORD 32
#define szSTRN 224
#define szITEM sizeof(struct TItem)
char fileDict[szSTRN];

typedef struct TItem {
char word[szWORD];
char mean[szSTRN];
} Item;

fpos_t lookup(char *word, char *mean)
{
FILE * f = 0; Item i;
int r = 0; fpos_t p = 0;
if(!word) return 0;
f = fopen(fileDict, "rb");
if (!f) return 0;
while(!feof(f)) {
fgetpos(f, &p);
r = fread(&i, szITEM, 1, f);
if(r < 1) break;
if(i.word[0] == 0) continue;
if(strcmp(i.word , word)) continue;
if(mean) strcpy(mean, i.mean );
fclose(f);
return p+1;
}
fclose(f);
return 0;
}

void append(void)
{
Item i; FILE * f = 0; fpos_t p = 0;
memset(&i, 0, szITEM);
printf("请输入单词:"); scanf("%s", i.word );
p = lookup(i.word, 0 );
if(p) {
printf("字典内已经有该单词记录!\n");
return;
}
printf("请输入释义,按回车结束:");
fflush(stdin);
gets(i.mean );
f = fopen(fileDict, "ab");
fwrite(&i, szITEM, 1, f);
fclose(f);
printf("词条已新增\n");
}

void erase(void)
{
Item i; FILE * f = 0; fpos_t p = 0;
memset(&i, 0, szITEM);
printf("请输入单词:"); scanf("%s", i.word );
p = lookup(i.word, 0 );
if(p==0) {
printf("字典内没有该单词记录!\n");
return;
}
p--;
memset(&i, 0, szITEM);
f = fopen(fileDict, "rb+");
fsetpos(f, &p);
fwrite(&i, szITEM, 1, f);
fclose(f);
printf("词条已删除\n");
}

void edit(void)
{
Item i; FILE * f = 0; fpos_t p = 0;
memset(&i, 0, szITEM);
printf("请输入单词:"); scanf("%s", i.word );
p = lookup(i.word, 0 );
if(p==0) {
printf("字典内没有该单词记录!\n");
return;
}
p--;
printf("请输入释义,按回车结束(输入abort放弃修改):");
fflush(stdin);
gets(i.mean );
if(strstr(i.mean ,"abort")) {
printf("已放弃修改!\n");
return ;
}
f = fopen(fileDict, "rb+");
fsetpos(f, &p);
fwrite(&i, szITEM, 1, f);
fclose(f);
printf("词条已保存\n");
}

void query(void)
{
Item i; fpos_t p = 0;
memset(&i, 0, szITEM);
printf("请输入单词:"); scanf("%s", i.word );
p = lookup(i.word, i.mean );
if(p==0) {
printf("字典内没有该单词记录!\n");
return;
}
printf("【词条】%s\n【释义】%s", i.word , i.mean );
}

void set(void)
{
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 >1)
strcpy(fileDict, argv[1]);
else
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';
switch(cmd) {
case 0: set(); break;
case 1: query(); break;
case 2: append(); break;
case 3: edit(); break;
case 4: erase(); break;
default: return 0;
}
}
return 0;
}本回答被提问者采纳

如何制作一个c语言的词典
include<string.h> int main(){ char *en[]={"airport","detective","parcel","diamond","stone","sand","flower","vegetable","pool","minute"};char *ch[]={"飞机场","侦探","包裹","钻石","石头","沙","花","蔬菜","水池","分钟"};int i,k=-1; \/\/i作为循环变量,k...

如何用C语言编译电子词典??
include <conio.h> include <stdio.h> include <stdlib.h> include <string.h>#define szWORD 32 define szSTRN 224 define szITEM sizeof(struct TItem)char fileDict[szSTRN];typedef struct TItem { char word[szWORD];char mean[szSTRN];} Item;fpos_t lookup(char *word, char *m...

c语言做小词典
\/*基本的库函数*\/ include <conio.h> include <stdio.h> include <stdlib.h> include <string.h> define szWORD 32 define szSTRN 224 define szITEM sizeof(struct TItem)char fileDict[szSTRN];typedef struct TItem { char word[szWORD];char mean[szSTRN];} Item;fpos_t lookup(ch...

C语言课程设计 电子词典
include <windows.h> include <stdio.h> include <malloc.h> include <winbase.h> include <process.h> void Search(){ char ret;char temp[100];char buffer[2];char result[100];printf("请输入要查询的单词:\\n");scanf("%s",&temp);buffer[0]=temp[0];buffer[1]='\\0';int ret=...

如何用C语言编译电子词典??
你要先有一个文件,如果只是测试,可以直接写在程序里.文件格式为 apple 苹果 sleep 睡觉 ...运行程序,把文件读入内存.这样你输入英文后,搜索比较,如有相同的就显示出来.

怎样用C语言编写英汉小词典
很BS楼上的这个人,人家学点东西你就要钱 这个方面的还没做过,我给你个思路吧,如1楼所说,采用动态单链表,在结构体里定义所要涉及的成员,查找功能利用字符串比较函数strcmp,然后利用文件操作进行储存,当然如果你会连接数据库更好 以上的可以实现你的题目的所有要求 ...

用C语言写个具有查字典功能的程序,谁帮我看看哪里出错了
fgets(a,1000,fp);是读取文件而你的文件打开方式确是 fp=fopen("E:\\\\13计科外包班\\\\词典工程\\\\dict.txt","w");你是已写的方式打开的 要改成 fp=fopen("E:\\\\13计科外包班\\\\词典工程\\\\dict.txt","r");望楼主采纳

用c语言编写一个简易的英汉词典,但单词库太大,读出文件太慢,怎样可以...
如果你是读txt那就没办法了 ..建议用数据库 你要分类索引 比如a开头 那我只找a开头的 这样可以缩小查询范围 ..不能把整个文件都读出来 太费时间了 ..

怎么用C语言设计电子英汉词典?(要原程序)100个单词就行
最简单的思想就是用switch语句,但有些烦琐,可能有更好的方法

用C语言编电子英汉词典
如果写得话。就单数据库那块可能要花很长一个时间!因为要管理一大堆的数据是一件很头疼的事情!

相似回答