[小小项目]背单词的程序---1.0_纯C语言_单文件版本

文章目录

  • 前言:可以学到什么?
  • 一、功能介绍以及演示
  • 二、准备工作
    • 1)准备所需的单词的文本
    • 2)任意的C语言开发环境
  • 三、代码
    • 1)读取文件,不存在则爆出异常
    • 2)开辟空间来存放读取出来的内容
    • 3)完成函数--从文件中读取英文,写入到en_buffer
    • 4)完成函数--从文件中读取中文,写入到ch_buffer
    • 5)利用死循环完成输入以及判断的逻辑
  • 四、代码细节
    • 1)文件每行的末尾含有\r和\n两个字符
    • 2)getChinese函数中的if判断
  • 总结
  • 附:源码地址


前言:可以学到什么?

  1. 加强基础语法的掌握
  2. 关于C语言的文件读写的操作(重点)

一、功能介绍以及演示

  • 输入文本,可以判断是否正确,正确的话下一个,不正确的话提示,知道正确为止。
  • 单词不会的话可以输入next进行下一个
  • 退出的话输入end
    在这里插入图片描述

二、准备工作

1)准备所需的单词的文本

注:以下单词来源于百度,开源,可用于学习

  • 对应的中文和英文,每行的中文英文严格的一一对应,保存在 txt 文本中,程序的实现以及对文件的读写主要靠这两个文件
    在这里插入图片描述

  • 英文如下,每个单词占一行
    在这里插入图片描述

  • 中文如下,单词有多个词性,但是每个中文只占一行
    在这里插入图片描述

2)任意的C语言开发环境

  • 需要注意的是:把上述的文本文件添加至工程

三、代码

1)读取文件,不存在则爆出异常

FILE* pf_en = fopen("./data/en.txt", "r");
FILE* pf_ch = fopen("./data/ch.txt", "r");
FILE* pf_mem = fopen("./data/info.txt", "r");
if (pf_en == NULL || pf_ch == NULL || pf_mem == NULL) {printf("必要文件丢失或被修改!\n");getchar();return -1;
}

2)开辟空间来存放读取出来的内容

// 记录当前定位的位置信息,方便下次打开的时候直接读取
// 相当于是保存记录
unsigned long long seck_en = 0;
unsigned long long seck_ch = 0;
// 各自缓冲区
char* en_buffer = (char*)calloc(50, 1);
char* ch_buffer = (char*)calloc(300, 1);
char* usr_buffer = (char*)calloc(50, 1);

3)完成函数–从文件中读取英文,写入到en_buffer

void getEnglish(char* en_buffer, FILE* pf_en, long long* seck_en) {char ch = 0;for (int i = 0; (ch = fgetc(pf_en)) != '\n'; i++) {en_buffer[i] = ch;// 每读取到一个字节,偏移量就加一*seck_en += 1;}// 把单词转换成纯小写en_buffer = strlwr(en_buffer);// 结束时便宜两个字节,跳过回车和换行*seck_en += 2;
}

4)完成函数–从文件中读取中文,写入到ch_buffer

void getChinese(char* ch_buffer, FILE* pf_ch, long long* seck_ch) {char ch = 0;for (int i = 0; (ch = fgetc(pf_ch)) != '\n'; i++) {// 不是首元素  且当前读取到的是字母  且前一个元素不是字母if (i > 0 && isword(ch) && !isword(ch_buffer[i - 1])) {// 在缓冲区内添加一个换行ch_buffer[i++] = '\n';}ch_buffer[i] = ch;// 每读取到一个字节,偏移量就加一*seck_ch += 1;}// 结束时偏移两个字节,跳过回车和换行*seck_ch += 2;
}

5)利用死循环完成输入以及判断的逻辑

while (1) {// 往缓冲区里放入当前的单词和中文意思getEnglish(en_buffer, pf_en, &seck_en);getChinese(ch_buffer, pf_ch, &seck_ch);// printf("%s\n", en_buffer);//输出中文的示意printf("当前单词中文意思如下, 不会请输入next, 退出请输入end\n");printf("%s\n", ch_buffer);printf("输入英文:>");while (1) {// 用户输入for (int i = 0; (ch = getchar()) != '\n'; i++) {usr_buffer[i] = ch;}// 输入next跳过,进行下一个if (strcmp(usr_buffer, "next") == 0) {printf("这个单词是:%s\n", en_buffer);printf("3秒后清屏\n");Sleep(3000);system("cls");break;} else if (strcmp(usr_buffer, en_buffer) == 0) {// 输入正确printf("恭喜输入正确!\n");printf("2秒后清屏\n");Sleep(2000);system("cls");break;} else if (strcmp(usr_buffer, "end") == 0) {printf("2秒后退出!\n");Sleep(2000);goto end;} else {// 清空用户的输入printf("不是哦,重新输入:>");memset(usr_buffer, 0, 50);continue;}}// 清空当前的缓冲区memset(en_buffer, 0, 50);memset(ch_buffer, 0, 300);memset(usr_buffer, 0, 50);
}

四、代码细节

1)文件每行的末尾含有\r和\n两个字符

  • 所以我们需要将seek往后偏移2,才可以读取下一个单词

2)getChinese函数中的if判断

if (i > 0 && isword(ch) && !isword(ch_buffer[i - 1]))
  • 英文的示意是有不同的词性的,于是我们可以判断一行中文中出现的非第一次英文单词作为分割,在输出中添加换行

总结

以上就是所分享的内容,本程序仅简单实现了对单词的读写以及只有用户输入功能,接下来会给大家带来C语言分文件的版本

附:源码地址

源码地址,内含源码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/63266.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android 补签控件,墨墨背单词怎么补签 看完你就懂了

现在手机的普及让不少用户在手机上面学习英语,而墨墨背单词就是一款专业的英语学习软件,它可以提醒用户每日记忆单词,还有督促你学习的签到系统,通过每日的签到不仅可以提高你学习英语的动力还能免费提升每日学习单词的上限量呢。…

未root的情况下获取墨墨背单词的databases文件夹

文章目录 前言解决思路第一步:备份下载Winhex使用abe解压备份文件结语 前言 在我的《墨墨背单词免费版本地数据找回方法》这篇博客中提到:“复制出“databases”文件”。但这个文件夹并不是那么容易复制出的,如果你的手机已经被root了&#…

C语言实现背单词软件(系统级别)

目录 一、软件需求说明书 1 引言 2 任务概述 二、可行性研究报告 1 编写目的 2 所建议的系统(技术可行性) 3 使用方面的可行性 4 结论 三、系统设计说明书 1.面向对象设计 1.1前提说明 1.2 系统设计 2.面向对象建模 四&#xf…

不背单词vs墨墨背单词 竞品分析

1. 分析背景 1.1 业界状况 根据易观千帆数据中心,2020年4月全网教育APP活跃用户共44597.16万,将近4.5亿,且仍在持续稳定增长,其中在线外语学习赛道坐拥6726.52万活跃用户,占比15%。背单词类软件作为一项外语学习人群…

【墨墨英语单词库免费开源无偿分享】小学、初中、高中、大学四六级专四专八、考研、托福、雅思等词书文本大合集

还在愁没有自己想要的词书?这不,我都给你准备好了: 纯英文txt源词库 带list分类txt词库大全 带中文释义excel词库 这些词书呢,是知乎上的一位大神用爬虫把墨墨背单词app的所有词库给爬取下来的, 而且无偿开源&…

关于电脑使用墨墨背单词使用键盘操作问题

在上班期间摸鱼的时候偶尔背背单词,用鼠标还需要平移点击,很累。 如何全用键盘操作界面? 01 Windows系统 Windows系统使用比较简单,下载一个雷电模拟器就可以解决。 默认数字123分别对应墨墨上的“认识”、“模糊”、“忘记”。…

印度网民集体删除中国APP,网友评论亮了

全世界只有3.14 % 的人关注了 爆炸吧知识 最近,国外有一款Remove China Apps火了。 这款APP只有一个功能:可以一键扫描用户手机里的应用,识别出自中国公司的应用,并进行一键删除的骚操作。 应用的主图标、界面,甚至特意…

因签署Android独家协议排除竞争对手 谷歌在印度被罚款1.62亿美元

印度反垄断监管机构日前宣布对谷歌罚款1.62亿美元 , 原因是谷歌与合作伙伴签署独家协议以排除竞争对手。 怎么排除竞争对手还是往期相同的话题:谷歌要求合作伙伴们在安卓设备里预装谷歌核心应用并设置为默认。 同时还要求合作伙伴不要开发基于安卓开源项目的定制系…

油猴脚本 使用教程

一、了解油猴 1.百度“油猴”搜索官网 2.进入官网 https://greasyfork.org/zh-CN 用户脚本是什么? 用户脚本是一段代码,它们能够优化您的网页浏览体验。安装之后,有些脚本能为网站添加新的功能,有些能使网站的界面更加易用&am…

油猴的使用

油猴 tampermonkey 【不同的人叫法也不一样】 油猴 ?? 好多人会问, 这个是什么东西?? 这个就由我来给大家介绍一下吧 我们看油猴官网介绍 https://www.tampermonkey.net/ Tampermonkey 是一款免费的浏览器扩展和最…

到底是微信窃取隐私,还是输入法光明正大收集用户信息?

作者 | Carol 出品 | CSDN(ID:CSDNnews) 在2021年1月的微信公开课上,微信创始人张小龙曾针对微信的用户隐私问题做出了回应。 张小龙表示,过去接到过不少用户的反馈称“在微信上聊什么电商平台就推什么”,…

又一公司被曝监控员工手机:短信照片微信聊天记录都能获取!

👇👇关注后回复 “进群” ,拉你进程序员交流群👇👇 作者丨 扩展迷EXTFANS 来源: https://mp.weixin.qq.com/s/ZGUH5v7o7-LLjOYfHQi1pA 近日,有陕西西安网友反映,他们入职的公司要求统…

国内最大个人信息泄露案,54亿条数据泄露

近日,江苏无锡警方成功破获了一起侵犯公民个人信息案,犯罪嫌疑人非法获取各类公民信息54亿多条,并通过非法网络平台以查询、出售等方式牟取利益。 今年3月,无锡网警发现,一名卖家利用非法网络平台,为他人查…

移动互联网时代,你的个人信息正通过这12种方式泄露

导读:法律保护我们的隐私,但是智能手机会记录来电和短信的日志信息,并且包括检测位置、移动、方向、亮度和附近其他手机的设备。为了更好地为我们服务,许多这些设备都会收集有关我们最细小的偏好和日常生活习惯的信息。 大部分数据…

大数据|拓尔思预计今年上半年净利润同比增长30%至60%

【TechWeb】7月10日消息,深交所上市公司拓尔思发布公告称,预计今年上半年净利润同比增长30%至60%。 拓尔思公告截图 如图所示,拓尔思预计今年上半年盈利2359万元至2903万元,同比增长30%至60%。拓尔思上年同期盈利约1814万元。 业绩…

CNVD-2020-27769—拓尔思文件读取漏洞

目录 1、描述 2、过程 3、修复 拓尔思TRSWAS5.0文件读取漏洞 注明:网上相关资料较少,进行整理了一下。展示相关的思路 1、描述 拓尔思中文检索系统TRSWAS5.0 web/tree接口treefile参数存在文件读取漏洞,可读取数据库配置文件、账户密码等…

golang面经整理(一)(k8s,docker二次开发方向,云原生方向)

笔者在2022年7月份-9月份之间面试了很多golang和k8s相关的面试,主要想从事云原生相关的开发工作,大小公司面试了很多,现将整体面试感受和一些通用的问题做一些整理记录,帮助大家在面试的时候更好的进行准备。最近大环境不好&#…

TRS的WCM历史漏洞

一、绕过密码登录 1访问网站的登录页 看到TRS WCM知道为北京拓尔思开发的一个平台,这个平台是存在相关漏洞的 2 在网址后面添加查看管理员密码的链接 wcm/infoview.do?serviceidwcm6_user&MethodNamegetUsersByNames&UserNamesadmin3在地址栏中输入xx…

宏观分析20221206

下图是美元指数与美国十年期国债以及纳指的走势 下图是离岸人民币与恒生科技以及上证50的走势 国内股市大的扰动都是由外部增量的资金造成的,在宏观大框架下,通过追踪大资金来投资也是一种思路