鱼C论坛

 找回密码
 立即注册
查看: 1421|回复: 6

如何用C语言读取一个有中文和数字的txt文件。。。

[复制链接]
发表于 2020-5-24 22:01:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
C语言课程设计作业,真是不会做了。就想问下大家
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-24 22:03:51 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-24 22:11:04 | 显示全部楼层
scanf
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-24 22:34:15 | 显示全部楼层
编码,是应用层要关心的事情。读文件,可以算作操作系统层面。不相干。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-24 22:39:45 | 显示全部楼层
qiuyouzhi 发表于 2020-5-24 22:03
https://zhidao.baidu.com/question/541054206.html

好的,我看看,谢谢你
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-24 22:40:40 | 显示全部楼层
赚小钱 发表于 2020-5-24 22:34
编码,是应用层要关心的事情。读文件,可以算作操作系统层面。不相干。

但是,我要做的那种成绩分析到最后需要输出中文需要用到txt文本中的中文。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-24 23:00:45 | 显示全部楼层
DongGe 发表于 2020-5-24 22:40
但是,我要做的那种成绩分析到最后需要输出中文需要用到txt文本中的中文。。

如此,你的问题与你的标题不匹配。

你需要先设计一种协议(可以理解为存储格式,后面都称作“协议”),如何表示一条成绩记录。然后,考虑,基于你设计的协议,如何读写文件。

我有两种建议,
1. 基于 JSON 做文本序列化,每一条成绩记录,占用一行。
写入: 现将成绩结构体,进行 JSON 序列化。然后,使用 append 的方式,追加到文件最后。
读取: 以 "\n" (Linux / windows / macos 通用) 为分隔符,逐行读取文件,每一行,使用 json 反序列化,即为,一个成绩结构体。
优点: 人类可读,调试方便。
缺点: 大概率需要学习 JSON 是什么。

2. 长度 + 数据内容
每一条成绩的记录,有两部分组成:
第一部分: 固定长度的数值,表示,成绩数据实际大小。
第二部分: 成绩结构体的数据内容。

写入: 将结构体,序列化为二进制串(可以用地址转换为 char*, 或者其他什么协议),序列化之后,可以知道数据长度。先将这个长度写入到文件(无论大端还是小端都可以),然后将,序列化结果写入文件。
读取: 先读取固定长度(根据之前,写入文本时,数据长度字段的长度), 然后,读取这个长度的字节数,即为实际数据。

第三种: 按块读写,不推荐。
定义一个数据块大小,需要保证超过所有成绩记录的大小。

写入: 任意方式,序列化为二进制后,先写入实际数据,然后,按照块大小,补齐数据,或者 调用 truncate 改变文件大小。
读取: 每次固定读取一个块的数据。

以上,最推荐 方法1。如有疑问,自行 https://www.baidu.com || https://bing.com || https://google.com
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-8 07:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表