C语言入门:学生成绩管理程序的完善(1):用文件保存数据
“写个成绩小工具,重启电脑数据全没了?
”——别笑,隔壁实验室的师弟昨晚刚哭完。
救急办法其实就三行代码:把数组塞进文件,下次开机再读回来。
听起来像把作业本塞进抽屉,但抽屉有锁,文件有模式,选错一次,全班成绩变空白。
文本还是二进制?
老师上课总说“文本好调试”,可一到 2000 条记录,fprintf 慢得像 2G网。
换成 fwrite,一秒写完,文件体积直接砍半。
别被“二进制看不懂”吓到,用十六进制编辑器瞄一眼,学号、姓名、分数排排站,比CSV 还整齐。
打开模式踩坑现场
“w” 是清空重写,适合第一次建档;想偷偷补录一条,得用“a”,否则前功尽弃。
读的时候老老实实 “rb”,文件不存在直接 return0,别让程序当场崩溃。
有人把文件放桌面,路径里带空格又不加双引号,fopen 直接NULL,报错找不到文件——其实是路径被空格劈成两半。
实战套路
1.结构体尾巴加一字节校验和,读出来先对数,防止熊孩子用记事本手抖改分。
2. 写文件时先写 count,再写数组,读的时候先读 count,再一次性fread,省得循环 malloc。
3. 程序退出前 fflush + fclose 双保险,断电也稳。
笔记本电池说没就没,别信它。
彩蛋:把文件名改成当天日期,每天自动归档,月底直接发辅导员,再也不用Ctrl+C、Ctrl+V。