怎么用C中的文件操作函数删除一部分数据?

TseNing 2015-04-25 02:04:08
在一个已经存在并且有多条记录的二进制文件中,怎么使用C中的文件操作函数或者其他指令删除一条指定的记录。其中记录以数组形式存在,(可以以学生信息为例)。
如果用"rb+"模式打开文件,然后把要删除的记录之外的其他记录重新写入文件的话 由于少了一条记录,所以最后一条记录的内存实际上是没有被操作的,有没有办法删除掉这块儿内存呢?
...全文
913 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2015-04-27
  • 打赏
  • 举报
回复
所谓修改删除文件a某位置的内容,其实是读打开文件a,再将‘a中修改删除位置之前的内容+修改删除的内容+a中修改删除位置之后的内容’保存到文件b,关闭文件a,删除文件a,将文件b改名为与之前文件a相同的名字,仅此而已。
苏叔叔 2015-04-25
  • 打赏
  • 举报
回复
仅供参考:

/*1.dat
Tom 15 98.3
Jim 14 99.5
Lyli 15 89.0
David 15 80.8
*/
int main(void)
{
	FILE *f, *nf;
	if (NULL == (f = fopen("1.dat", "rb")))
	{
		fprintf(stderr, "Can not open file 1.dat");
		return 1;
	}
	if (NULL == (nf = fopen("11.dat", "wb")))
	{
		fprintf(stderr, "Can not create file 11.dat");
		fclose(f);
		return 1;
	}
	char name[20];
	char Name[20];
	int year;
	double grade;
	int r;
	printf("input the delete name string:");
	scanf("%20s", name);
	while (1)
	{
		r = fscanf(f, "%s%d%lf\n", Name, &year, &grade);
		if (3 == r)
		{
			if (strcmp(name, Name) == 0) continue;
			fprintf(nf, "%s %d %lg\n", Name, year, grade);
		}
		else break;
	}
	fclose(f);
	fclose(nf);
	return 0;
}
TseNing 2015-04-25
  • 打赏
  • 举报
回复
OK 解决了 可以在重新写入数据的时候换成“wb+”模式,这样原文件已有的数据会被删除。然后重新开始添加记录
内容概要:本文档为江苏瑞腾机电科技有限公司生产的型号为RTDC1016A-2的便携式无油空气压缩机的规格说明书,详细列出了该压缩机的各项技术参数与性能指标。主要包括额定电压DC13V、额定电流4A、最大功率不超过52W,在额定条件下可实现14L/min的流量,最大流量可达19L/min,额定工作压力为140KPa,运行噪音低于60dB(A),适用于-10℃~40℃的工作环境。设备采用直流无刷电机设计,具有12槽8极结构,支持连续工作模式但需配备外部风扇散热。文档还提供了外形尺寸(100.9×45.6×72.8mm)、净重(375g)、绝缘等级(B级)、安全耐压测试标准及冷态绝缘电阻等关键电气与机械参数,并附有性能曲线图说明其在不同压力下的流量与功率表现。; 适合人群:从事小型机电设备研发、维护或采购的技术人员,以及需要集成微型压缩机到系统的工程应用人员;具备基础电气与机械知识的工程师和技术员。; 使用场景及目标:①用于便携式医疗设备、气动工具或其他低噪音、小体积空气供给系统的开发与选型;②作为产品设计参考依据,评估该压缩机在特定工况下的适配性与可靠性;③指导安装、调试及质量检验流程。; 阅读建议:在查阅时应重点关注其电气安全参数、工作条件限制及散热要求,结合性能曲线图进行实际负载匹配分析,确保在系统集成满足稳定性和安全性需求。

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧