ImageVerifierCode 换一换
格式:DOC , 页数:36 ,大小:408.04KB ,
资源ID:2727307      下载积分:12 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/2727307.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(C高编专业课程设计方案报告.doc)为本站上传会员【快乐****生活】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

C高编专业课程设计方案报告.doc

1、 C语言高级编程技术课程设计汇报 电子词典设计 指导老师: 班 级: 姓 名: 目录 一、课程设计要求—————————————————————————————- 1 - 二、可行性分析———————————————————————————————- 1 - 三、需求分析—————————————————————

2、———————————- 2 - (1)程序功效———————————————————————————- 2 - (2)输入输出要求—————————————————————————- 2 - 四、概要设计和具体设计———————————————————————————- 2 - 4.1模块分块——————————————————————————————- 2 - 4.1.1 打印菜单子函数print_menu——————————————————- 2 - 4.1.2 解析输入要求子函数analysis_cmd————

3、—————-—————-- 2 - 4.1.3 打开电子英汉词典(文件)子函数open_dict————-——————- 2 - 4.1.4 查找单词子函数find_word——————————————————-- 2 - 4.1.5 添加单词子函数add_word——————————————————-- 2 - 4.1.6 删除单词子函数delete_word————————————————-— - 2 - 4.1.7 修改单词子函数modify_word—————————————————- 3 - 4.1.8 保留单词子函数save_

4、word—————————————————— - 3 - 4.1.9 帮助单词子函数help———————————-—————————-- 3 - 4.1.10 释放单词子函数free_dict—————————————————--—- 3 - 4.1.11 主程序——————————————————————————-—- 3 - 4.2 实现功效———————————————————————-——————-- 3 - 4.3 各模块步骤图—————————————————————-——————-- 3 - 五、编码实现——————————————

5、———————-————————-——- 3- 5.1 主函数和头文件定义—————————————————————————- 3 - 5.1.1 子函数申明—————————————————-————————- 4 - 5.1.2开始菜单和解析编写—————————————-———————-- 6 - 5.1.3 头文件定义—————————————————————-————- 5 - 5.2 各个模块实现—————————————-—————————————- 7 - 5.2.1 查找模块—————————————-—————————————-- 7 -

6、 5.2.2 删除模块—————————————-—————————————-- 8 - 5.2.3 添加模块—————————————-————————————-—- 9- 5.2.4 修改模块—————————————-—————————————- 10- 六、系统调试—————————————-—————————————————-- 14 - 6.1系统调用文件存放位置————-——————————————————- 14- 6.2 子函数调用调试————————-—————————————————-14- 6.2.1 程序开始运行界面————-——————————————

7、———- 14 - 6.2.2 查找函数调用界面————-—————————————————- 15 - 6.2.3 删除函数调用界面——-———————————————————- 15 - 6.2.5 检验单词是否被删除界面—-—————————————————- 16 - 6.2.6 添加函数调用界面————-—————————————————- 16- 6.2.7 检验单词是否添加界面——-—————————————————- 16 - 6.2.8修改函数调用界面——-———————————————————- 17 - 6.2

8、9 确定修改单词界面——-———————————————————- 17 - 七、总结归纳—————————————-——————————————————- 17 - 附录:源程序代码—————————————-————————————————- 18 - 一、课程设计要求 1、全方面熟悉、掌握c语言基础知识,增强对不一样问题利用和灵活选择适宜数据结构,熟悉编制和调试程序技巧,掌握分析结果若干有效方法,深入提升上机动手能力,培养使用计算机处理实际问题能力,养成提供文档资料习惯和规范编程思想。 2、英汉词典: 以课上分发“dict.txt”文件为词典文件为基础,程

9、序能够实现完成“输出所输入英文单词汉字解释”也就是“英汉词典条目标查找”基础功效,还能够实现“英汉词典条目标增加”即增加所输入单词到文件中并添加汉字注释、“英汉词典条目标删除”即删除所输入单词及其汉字注释、“英汉词典条目标修改”即修改原本存在单词英语拼写功效。 功效描述: 在计算机中建立有限规模电子英汉词典,利用程序实现电子英汉词典查找、增词、删除、修改和维护工作。 1、词典内容为:每行对应一个词条,每个词条由两个字符串组成,字符串用若干空格符分开,前一个是单词字符串,后一个是释义字符串,使用分号作为多个释义分隔符。 2、采取菜单工作方法。在一个操作实施以后

10、程序问询是否继续实施该操作,假如继续查询,则直接输入你所需要查询单词 ,若想要进行其它功效使用便需要根据提醒输入结束功效是所需输入字符,以后再输入你想要使用功效序号,然后进行程序下一步运行。 3、要求整体设计以人为本,用户界面简练美观。 测试数据:以老师所给词库为准。 二、 可行性分析 本课程关键完成时候字典查询、修改、添加、删除等功效,从而我选择方案是采取结构体和模块化方法去实现,每一个功效全部被我细分到了不一样模块中,然后依据菜单要求输入不一样由“解析选项”子函数来调用不一样子函数,来达成实现不一样功效之间转换,而主函数起到一个汇总调用功效。 三、需求

11、分析 (1)程序功效 英汉词典作为一个常见学习工具,是我们常常要使用。此程序能完成一个简单电子英汉词典功效,如:单词查找、增词、删除、修改和维护刷新等工作。在计算机中建立有限规模电子英汉词典(文件),利用程序实现电子英汉词典查找、增词、删除、修改和维护工作。词典内容为:每行对应一个词条,每个词条由两个字符串组成,字符串用若干空格符分开;前一个是单词字符串(英文),后一个是释义字符串(汉字),使用分号作为多个释义分隔符。 且在程序中能够实现对于电子英汉词典(文件)当中内容添加单词,删除单词和修改英语单词功效。 (2)输入输出要求 采取菜单工作方

12、法。在程序开始运行时候便会有一个菜单出现,菜单中对于程序中能够实现功效全部逐一编号,当你想使用其中某一项功效时,只需将此功效前编输入,再按enter键便可使用该功效,若需要退出目前功效时,只需将推出字符输入再按enter键,便可重新出现菜单以供选择其它功效。 要求整个设计以人为本,用户界面友好。 四、概要设计和具体设计 4.1 程序分块 4.1.1 打印菜单子函数print_menu,在程序开始运行以后,此函数便开始工作,在界面出现,方便我们在使用此程序时能够愈加方便快捷,使程序功效使用愈加方便快捷。 4.1.2 解析输入要求子函数analysis_cmd,

13、此函数是分析我们在键盘上输入数字,根据数调用对应子函数工作。 4.1.3 打开电子英汉词典(文件)子函数open_dict,此函数是用于打开和调用电子英汉词典(文件)。 4.1.4 查找单词子函数find_word,此程序是用于查询我们从键盘输入单词,并显示其汉字注释。 4.1.5 添加单词子函数add_word,此程序是用于添加我们从键盘输入单词,并存入其汉字注释。 4.1.6 删除单词子函数delete_word,此程序是用于删除我们从键盘输入单词,并删除其汉字注释。 4.1.7 修改单词子函数modify_word,此程序是用于修改电子英汉词典(文件)中存

14、在英文单词拼写。 4.1.8 保留单词子函数save_word,此程序是用于保留我们在打开程序后对于电子英汉词典(文件)添加、删除或修改操作。 4.1.9 帮助单词子函数help,此程序是用于当我们操作过多时清屏函数。 4.1.10 释放单词子函数free_dict,此程序是用于释放我们在操作中多出单词函数。 4.1.11 主程序对于上述函数使用做存贮。 4.2、实现功效: 系统功效分析:本系统能够查询,修改,删除,增加词条,和退出词典。 4.3 各模块步骤图 3.删除单词 4.修改单词 5.保留单词 7.退出 1.查找单词 功效序号选择

15、 打印菜单 主函数 2.增加单词 6.帮助 助 五、编码实现 5.1、主函数和头文件定义 5.1.1 子函数申明 struct Node { char * key; char * context; pNode next; }; static pNode head = NULL; static bool save_flag = true; //true说明已经保留 false未保留 void print_menu(); //打印菜单 void analysis_cmd(char c);

16、 //解析选项 void create_dict(FILE * file); //创建字典链表 void open_dict(); //打开字典文件 void find_word(); //查找单词 void delete_word(); //删除单词 void modify_word(); //修改单词 void save_word(); //保留单词 void help(); //帮助 void free_dict(); //释放 void p

17、rint_dict(); //打印 5.1.2开始菜单和解析编写 void print_menu() { printf("=========================\n"); printf("| 1. 查找单词\t\t|\n"); printf("| 2. 增加单词\t\t|\n"); printf("| 3. 删除单词\t\t|\n"); printf("| 4. 修改单词\t\t|\n"); printf("| 5. 保留单词\t\t|\n"); printf("| 6. 帮助\t\t|\n"); printf("| 7.

18、退出\t\t|\n"); printf("=========================\n"); } //输入命令函数 char get_command() { char cmd; printf("\n\n请选择你需要功效:"); scanf("%c", &cmd); printf("\n"); while (cmd < '1' || cmd > '9') //假如输入选项不是1-9,重新输入 { printf("您输入选项不正确\n请输入正确选择 : "); scanf("%c", &cmd); printf("\n"); }

19、 return cmd; } //解析输入命令函数 void analysis_cmd(char c) { switch(c) { case '1': find_word(); break; case '2': add_word(); break; case '3': delete_word(); break; case '4': modify_word(); break; case '5': save_word(); break; case '6': help(); break

20、 case '7': if (!save_flag) save_word(); free_dict(); exit(0); break; default: printf("请输入正确选择\n"); break; } } 5.1.3头文件定义 #include //C语言头文件函数 #include //分配内存函数 #include //字符函数 #define DICT_EN "dict en.txt" 5.2各个模块实现 5

21、2.1查找模块 //查找单词操作 void find_word() { char word[100] = {0}; do { printf("\n\n请输入你要查找单词[结束查找输入-f]:\n"); scanf("%s", word); //输入你要查找单词 if (!strcmp(word, "-f")) //输入为-f表示要退出查找 { fflush(stdin); //刷新缓冲区(退出前要刷新缓冲区) break; } bool flag = false; //是否查找到标

22、志位 pNode p = head; while (p->next != NULL) //遍历链表 { if (!strcmp(p->key, word)) //假如改节点key是你要输入要查找单词,打印输出,并置位标志位 { printf("%s\n", p->context); flag = true; //置位标志位 break; } p = p->next; //假如该节点不是你要查单词,进入下一个节点 } if (!flag) //假如标志位未被置位(fal

23、se),则提醒未找到。 printf("not found.\n"); }while(1); } 5.2.2删除模块 //删除单词 void delete_word() { char key[100] = {0}; bool flag = false;//是否删除成功 false表示未删除成功或不存在,true表示删除成功、 do { printf("输入-d退出删除.\n"); printf("\n\n请输入你要删除单词:\n"); scanf("%s", key); if (!strcmp(key, "-d")) {

24、 fflush(stdin); //刷新缓冲区 break; } if (key == NULL) { printf("输入有误,请重新输入。\n"); continue; } pNode p = head; while (p->next != NULL) { if (!strcmp(p->key, key)) //存在就删除 { if (p->key != NULL) //释放建立链表时候创建空间 free(p->key); if (p->context

25、 NULL) free(p->context); free(p); printf("单词%s已经被删除.\n", key); flag = true; break; } p = p->next; } }while(1); if (flag) save_flag = false; } 5.2.3添加模块 //添加单词 void add_word() { char key[100] = {0}; //保留要添加单词本身数组 char context[100] = {0};

26、 //保留要添加单词词义数组 bool flag = false; //是否添加成功 false表示未添加成功,true表示添加成功 do { printf("输入-a退出添加.\n"); printf("\n\n请输入你要添加单词:\n"); scanf("%s", key); //输入要添加单词本身 if (!strcmp(key, "-a")) //假如输入为-a,则刷新缓冲区,并退出添加功效。 { fflush(stdin); //刷新缓冲区 break; } printf(

27、"\n\n请输入你要添加单词词义:\n"); scanf("%s", context); //输入要添加单词词义 if (key == NULL || context == NULL) //检测,假如输入单词本身或词义为空,则提醒有误。 { printf("输入有误,请重新输入。\n"); continue; } pNode p = head; //用p统计链表头,用于遍历链表使用 while (p->next != NULL) //链表遍历循环 {if (!strcmp(p->key, key)) //假如

28、要添加单词在词库中存在,则提醒存在,不能添加成功。 { printf("您添加单词在字库中已存在,请重新输入。\n"); break; } else { //查找链表中适宜位置,添加单词 if (strcmp(p->key, key) < 0 && strcmp(p->next->key, key) > 0) { pNode temp = (pNode)malloc(sizeof(Node)); memset(temp, 0, sizeof(temp)); int len

29、 strlen(key)+1; temp->key = (char *)malloc(len); memset(temp->key, 0, len); memcpy(temp->key, key, len); temp->key[len-1] = '\0'; len = strlen(context)+1; temp->context = (char *)malloc(len); memset(temp->context, 0, len); memcpy(temp->context, contex

30、t, len); temp->context[len-1] = '\0'; temp->next = p->next; //添加单词操作 p->next = temp; printf("%s添加成功\n"); flag = true; break; } p = p->next; } } }while(1); if (flag) //链表是否有更新标志,假如有更新,则清空save_flag标志位 save_flag = false; } 5.2.4修改模

31、块 //修改单词 void modify_word() { char key[100] = {0}; char context[100] = {0}; bool flag = false; //是否修改成功 false表示未修改成功或不存在,true表示修改成功、 do { printf("输入-m退出删除.\n"); printf("\n\n请输入你要修改单词:\n"); scanf("%s", key); if (!strcmp(key, "-m")) { fflush(stdin); //刷新缓冲区

32、 break; } if (key == NULL) { printf("输入有误,请重新输入。\n"); continue; } pNode p = head; while (p->next != NULL) { if (!strcmp(p->key, key)) //假如要修改单词存在,则修改 { printf("%s词义是%s\n", p->key, p->context); printf("请输入要修改词义: "); scanf("%s", context); in

33、t len = strlen(context)+1; memcpy(p->context, context, len); p->context[len-1] = '\0'; printf("修改成功.\n"); flag = true; break; } } }while(1); if (flag) save_flag = false; } 六、系统调试 调用词典文件 6.1系统调用文件存放位置 词典文件放置位置和程序在同一文件夹中,这么能够方便程序调用 6.2子函

34、数调用调试 6.2.1 程序开始运行界面 本函数使用是菜单式查询,所以在程序运行之初便会有一个菜单出现,输入对应数值,便可调用数值对应函数功效 6.2.2 查找函数调用界面 此功效只要不输入结束查找字符便能够 一直继续查找下去,但假如想要继续使用其它功效,则必需输入退出查找函数字符,以后菜单便会重新出现。 6.2.3 删除函数调用界面 此功效只要不输入结束查找字符便能够一直继续删除下去,但假如想要继续使用其它功效,则必需输入退出删除程序字符,以后菜单便会重新出现。 6.2.5 检验单

35、词是否被删除界面 确定单词已经被删除 显示“not found”即表示此单词 以成功删除。 6.2.6 添加函数调用界面 6.2.7 检验单词是否添加界面 6.2.8 修改函数调用界面 6.2.9 确定修改单词界面 七、总结归纳 这次经过C语言设计一个简易电子词典,让我对于C语言这门课认知更为深刻。而且经过这次机会,我知道了自己在学习C语言这门课上上不足。 我们日常在课堂上编写程序在这次经历以后,我最终明白了老师日常所说“你们现在写程序实际上不能算作是程序,正真程序是几百甚至是几千行代码”,明白了为何说一个程序编写是么不轻易。 日

36、常只学习书本上知识是不够,自己编写程序也是学习过程中相当关键一环,以前学习过程中问题在这次课程设计中全部暴露出来了。比如:对于基础知识掌握不牢靠,程序了解不够透彻,对于指针、数组利用不牢靠等等,所以经过这次课程设计让我将以前学过知识又巩固了一遍,有效填补了部分自己知识系统漏洞。 以前学习是为了应付考试而学习,毕竟在学校中学分是一个很关键东西,而且现在学校教育全部是为了分数而学。而这次课程设计将我们所学知识利用到了现实生活中,尤其是这么一个很实用电子词典系统,让我对于程序设计方法和思绪有了比较清楚认知。此次程序使用是模块化思想,经过模块和模块之间联络,整体和模块之间联络,让我明白了其实程序全部

37、是大同小异,一通则百通。只要将各个模块之间功效加以调整,并附上对应注释,一个程序便不难了解。 附录:源程序代码 /****************************************************/ #include #include #define DICT_EN "dict_en.txt" typedef struct Node Node; typedef Node * pNode; //字典结构体定义,key是单词,context是翻译,next是指向下一个单词节点指针 str

38、uct Node { char * key; char * context; pNode next; }; static pNode head = NULL; static bool save_flag = true; //true说明已经保留 false未保留 void print_menu(); //打印菜单 void analysis_cmd(char c); //解析选项 void create_dict(FILE * file); //创建字典链表 void open_dict();

39、 //打开字典文件 void find_word(); //查找单词 void delete_word(); //删除单词 void modify_word(); //修改单词 void save_word(); //保留单词 void help(); //帮助 void free_dict(); //释放 void print_dict(); //打印 //创建字典结构体链表 void create_dict(FILE * file) { char

40、 buf[2048] = {0}; //存放读取每行单词缓冲区 head = (pNode)malloc(sizeof(Node)); //头指针分配空间 memset(head, 0, sizeof(Node)); //头指针空间数据清空 pNode p = head; //定义变量指向头指针,用于链表遍历浮标 int index = 0; //表示单词长度 int len = 0; //表示单词和翻译长度,和index一起使用用来计算翻译长度(len-index) while (!feof(f

41、ile)) //该while循环功效是一行一行读取单词和词义,直到读取到文件结尾 { index = 0; //清空单词长度 memset(buf, 0, sizeof(buf)); //清空缓冲区 fgets(buf, sizeof(buf), file); //读取文件中一行数据,也就是读取一个单词词本身和词义 if (buf == NULL) //读取为空,继续读取下一个单词 continue; len = strlen(buf); //单词和词义总长度 while (bu

42、f[index++] != '\t'); //该while循环是得到单词本身长度 if (index >= len) //假如只有单词儿没有词义,就表示该行不是正确单词和词义格式,舍弃,继续读下一行 continue ; p->key = (char *)malloc(index); //单词本身分配空间 memset(p->key, 0, index); //清空分配空间 memcpy(p->key, buf, index); //拷贝单词本身到分配空间 p->key[index-1] = '\0'; /

43、/单词结尾 p->context = (char *)malloc(len-index); //单词词义分配空间 memset(p->context, 0, len-index); //单词词义本身空间清空 memcpy(p->context, buf+index, len-index); //单词词义拷贝到分配空间 p->context[len-index-1] = '\0'; //单词词义结尾 p->next = (pNode)malloc(sizeof(Node)); //单词下一个节点分配空间 p->next->next = NULL;

44、 //单词下一个节点下一个节点指向空 memset(p->next, 0, sizeof(p->next)); //清空下一个单词分配空间 p = p->next; //目前游标指向下一个分配空间 }; } //文件打开操作 void open_dict() { FILE * file_en = fopen(DICT_EN, "r"); //打开字库文件 if (file_en == NULL) { printf("英文词典打开失败。\n"); exit(1); } create_dict(fi

45、le_en); //创建字典链表 fclose(file_en); //关闭文件 } //查找单词操作 void find_word() { char word[100] = {0}; do { printf("\n\n请输入你要查找单词[结束查找输入-f]:\n"); scanf("%s", word); //输入你要查找单词 if (!strcmp(word, "-f")) //输入为-f表示要退出查找 { fflush(stdin); //刷新缓冲区(退出前要刷新缓冲区)

46、 break; } bool flag = false; //是否查找到标志位 pNode p = head; while (p->next != NULL) //遍历链表 { if (!strcmp(p->key, word)) //假如改节点key是你要输入要查找单词,打印输出,并置位标志位 { printf("%s\n", p->context); flag = true; //置位标志位 break; } p = p->next; //假如该节点不是你要

47、查单词,进入下一个节点 } if (!flag) //假如标志位未被置位(false),则提醒未找到。 printf("not found.\n"); }while(1); } //添加单词 void add_word() { char key[100] = {0}; //保留要添加单词本身数组 char context[100] = {0}; //保留要添加单词词义数组 bool flag = false; //是否添加成功 false表示未添加成功,true表示添加成功 do { printf

48、"输入-a退出添加.\n"); printf("\n\n请输入你要添加单词:\n"); scanf("%s", key); //输入要添加单词本身 if (!strcmp(key, "-a")) //假如输入为-a,则刷新缓冲区,并退出添加功效。 { fflush(stdin); //刷新缓冲区 break; } printf("\n\n请输入你要添加单词词义:\n"); scanf("%s", context); //输入要添加单词词义 if (key == NULL || context ==

49、NULL) //检测,假如输入单词本身或词义为空,则提醒有误。 { printf("输入有误,请重新输入。\n"); continue; } pNode p = head; //用p统计链表头,用于遍历链表使用 while (p->next != NULL) //链表遍历循环 { if (!strcmp(p->key, key)) //假如要添加单词在词库中存在,则提醒存在,不能添加成功。 { printf("您添加单词在字库中已存在,请重新输入。\n"); break; }

50、 else { //查找链表中适宜位置,添加单词 if (strcmp(p->key, key) < 0 && strcmp(p->next->key, key) > 0) { pNode temp = (pNode)malloc(sizeof(Node)); memset(temp, 0, sizeof(temp)); int len = strlen(key)+1; temp->key = (char *)malloc(len); memset(temp->key, 0, len);

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服