近期深受开源的精神影响,并为之深深感动,想了很久,今天把我代码积累多年的一个“英汉字典”公布。

研一的时候因为无聊或者因为兴趣,做了一个纯C语言的英汉字典。核心算法是KMP快速查找算法,虽然有点长,但思想简单(我崇尚简单),基本思想为:当你输入某个英文时,如果字典收录了这个英文,会查出中文意思;如果没有收录,会提醒你输入中文意思。

做的时间比较久了,现在运行起来不是原本的意思,有空我会慢慢改进。

若你有心可以在此基础上改进,也可以告诉我哪里可以改进。谢谢!

/**************************

快速模式匹配---KMP算法

**************************/

#include

#define MAXSIZE 10000

typedef struct

{

char ch[MAXSIZE];

int length;

}Seqstr;

void Getnext(Seqstr p, int next[]);

void Kmp(Seqstr t, Seqstr p, int next[]);

void InputStr(Seqstr &str);

void OutputStr(Seqstr &str);

void FileToStr(FILE *fp, Seqstr &t);

int main(void)

{

int next[30];

FILE *fp;

Seqstr p, t;

p.length = 0;

t.length = 0;

InputStr(p);

OutputStr(p);

fp = fopen("word.txt", "r"); //InputStr(t);

if (fp != NULL)

{

FileToStr(fp, t);

fclose(fp);

OutputStr(t);

Getnext(p, next);

Kmp(t, p, next);

}

else

{

printf("can't open file!\n");

}

return 0;

}

void FileToStr(FILE *fp, Seqstr &str)

{

printf("input string from file...\n");

while (!feof(fp))

{

str.ch[str.length] = fgetc(fp);

str.length++;

}

str.ch[str.length] = '\0';

}

void InputStr(Seqstr &str)

{

char c;

printf("input a string:");

while((c = getchar()) != '\n')

{

str.ch[str.length] = c;

str.length++;

}

str.ch[str.length] = '\0';

}

void OutputStr(Seqstr &str)

{

int i = 0;

while(str.ch[i] != '\0')

{

printf("%c", str.ch[i]);

i++;

}

printf("\n");

}

void Kmp(Seqstr t, Seqstr p, int next[])

{

int i, j;

int appearTimes = 0;

int lines = 1;

i = 0;

j = 0;

while(i < t.length)

{

while (i < t.length && j < p.length)

{

if (j == -1 || t.ch[i] ==p.ch[j])

{

i++;

j++;

}

else

{

j = next[j];

}

if (t.ch[i] == '\n') //计算行数

{

lines++;

i++;

}

}//while

if(j == p.length) //首次出现的位置(return i-p.length)

{

appearTimes++;

printf("The %d times appear at line: %d\n", appearTimes, lines);

j = 0;

}

}//while

}

void Getnext(Seqstr p, int next[])

{

int i, j;

next[0] = -1;

i = 0;

j = -1;

while(i < p.length)

{

if(j == -1 || p.ch[i] == p.ch[j])

{

++i;

++j;

next[i] = j;

}

else

{

j = next[j];

}

}

for(i = 0; i < p.length; i++)

{

printf("next[%d] = %3d\n", i, next[i]);

}

printf("\n");

}

测试数据:

good好的

hi你好

英汉字典程序C语言,分享纯C语言英汉字典源码相关推荐

  1. java串口发送十六进制数,本文实例为大家分享了Java实现串口通信的具体代码,供大家参考,具体内容如下1.介绍使用Java实现的串口通信程序,支持十六进制数据的发送与接收。 源码:...

    本文实例为大家分享了Java实现串口通信的具体代码,供大家参考,具体内容如下 1.介绍 使用Java实现的串口通信程序,支持十六进制数据的发送与接收. 源码:SerialPortDemo 效果图如下: ...

  2. 基于微信小程序共享停车位设计与实现SSM_car.rar(项目源码+数据库文件+微信小程序开发+后端java语言)

    主要功能实现了共享车位的创建,车位的管管理,创建车辆.车辆的管理.附近车位.显示车位的编号,车位的位置,车位的状态,车位.可以查看订单记录车位.停费时间,确认时间计费的时间.可以删除,订单也可以确认是 ...

  3. java计算机毕业设计旅游信息分享网站MyBatis+系统+LW文档+源码+调试部署

    java计算机毕业设计旅游信息分享网站MyBatis+系统+LW文档+源码+调试部署 java计算机毕业设计旅游信息分享网站MyBatis+系统+LW文档+源码+调试部署 本源码技术栈: 项目架构:B ...

  4. c语言打印空心数字图形,(完整word版)C语言编写打印实心和空心菱形【源码】

    <(完整word版)C语言编写打印实心和空心菱形[源码]>由会员分享,可在线阅读,更多相关<(完整word版)C语言编写打印实心和空心菱形[源码](13页珍藏版)>请在人人文库 ...

  5. java计算机毕业设计分享网站MyBatis+系统+LW文档+源码+调试部署

    java计算机毕业设计分享网站MyBatis+系统+LW文档+源码+调试部署 java计算机毕业设计分享网站MyBatis+系统+LW文档+源码+调试部署 本源码技术栈: 项目架构:B/S架构 开发语 ...

  6. 2021最新外卖霸王餐小程序、H5、微信公众号版外系统源码|霸王餐美团/饿了么系统 粉丝裂变玩源码下载

    2021年了,你还在用淘宝客吗?赶紧跟上互联网的大势吧,外卖cps就是cps人群趋势! 个人.个体.企业均可使用 外卖霸王餐小程序.H5.微信公众号版外系统源码|霸王餐美团/饿了么系统 粉丝裂变玩 2 ...

  7. 美团饿了么外卖返利小程序公众号搭建外卖返利分销系统代cps源码

    美团饿了么外卖返利小程序公众号搭建外卖返利分销系统代cps源码 外卖CPS小程序源码分享 饿了么.美团优惠开发(外卖cps,三级裂变源码) 源码或搭建 http://y.mybei.cn/ 截图 功能 ...

  8. 分享66个ASP上传下载源码,总有一款适合您

    分享66个ASP上传下载源码,总有一款适合您 66个ASP上传下载源码下载链接:https://pan.baidu.com/s/1AAZA99BVNOFtVFIjnYl4XA?pwd=vyqa  提取 ...

  9. 分享66个PHP聊天室类源码,总有一款适合您

    分享66个PHP聊天室类源码,总有一款适合您 66个PHP聊天室类源码下载链接:https://pan.baidu.com/s/1_Fbbc3WMVWN7jjgTRaCnXw?pwd=h75j 提取码 ...

最新文章

  1. cmd 文本替换_将CMD信息保存为文件
  2. 4.1.2 数据交换方式
  3. 文巾解题 15. 三数之和
  4. 4、使用PreparedStatement接口实现增,删,改操作(常用)
  5. echars 在vue v-if 切换会 显示不出来或者显示出来但是不是百分百显示
  6. 批量html转换成excel,Excel批量转为Html,Html转换成Excel - 软件教程网
  7. ARM汇编基础详解(PS学习汇编的原因)
  8. .NET之生成数据库全流程
  9. mysql 时间戳 2038_mysql数据库的timestamp为什么从1970到2038的某一时间?某一时间是指什么时间?过了这个时间之后怎么办?-问答-阿里云开发者社区-阿里云...
  10. Mac下安装Flink的local模式(flink-1.2.0)
  11. 如何使用txt文件实现JMeter参数化
  12. 系统学习 TypeScript(五)——联合类型
  13. YOLOv2-yolo9000-batter,faster,stronger 论文精读解析
  14. PS人像精修插件MUA Retouch Panel中文版(支持ps2021)
  15. 增长工程日 | 从战略到战术,如何搭建新消费品牌增长体系
  16. 计算机学院举办 温暖冬日 感恩社会 活动,E·活动 | 我院举办“温暖冬日,感恩社会”活动...
  17. 入门大数据就业前景怎么样?
  18. jsonObject.getString()解析任意字段均可强转为string
  19. 小芳同学的错题总结(十四)
  20. 学习就是这样一条时而郁郁寡欢,时而开怀大笑的路

热门文章

  1. jackson序列化首字母大写amp;jackson序列化结果字段名重复
  2. 在 F1 Delta Time 大奖赛中找到对速度的热爱
  3. F1Delta Time 大奖赛世界巡回赛来啦
  4. 物联网操作系统HelloX V1.83发布公告
  5. 51单片机的特殊功能寄存器
  6. 蜻蜓直播社交软件之蜻蜓s前端文件目录详解-开源系统蜻蜓s系统
  7. 基于 eBPF 的云原生可观测性深度实践
  8. Python文件的打开和关闭
  9. 第四届橙瓜网络文学奖二次元分类目前评分前四名竟然脑洞这么大?
  10. 北京市公安局“人工智能安全研究中心”和“关键信息基础设施保护中心”2022年公开招聘工作人员公告