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

TseNing 2015-04-25 02:04:08
在一个已经存在并且有多条记录的二进制文件中,怎么使用C中的文件操作函数或者其他指令删除一条指定的记录。其中记录以数组形式存在,(可以以学生信息为例)。
如果用"rb+"模式打开文件,然后把要删除的记录之外的其他记录重新写入文件的话 由于少了一条记录,所以最后一条记录的内存实际上是没有被操作的,有没有办法删除掉这块儿内存呢?
...全文
911 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+”模式,这样原文件已有的数据会被删除。然后重新开始添加记录
内容概要:本文围绕多旋翼无人机姿态控制系统的鲁棒设计展开研究,重点探讨了在复杂动态环境下实现稳定、精确姿态控制的关键技术与方法。通过构建无人机动力学模型,结合现代控制理论,提出并实现了基于鲁棒控制策略的设计方案,有效应对系统不确定性、外部干扰及参数摄动等问题。文详细介绍了控制器的设计流程,并利用Matlab进行算法仿真验证,展示了所提方法在提升系统稳定性、动态响应性能和抗干扰能力方面的优势。研究涵盖控制算法建模、稳定性分析与仿真结果对比,为无人机控制系统开发提供了理论依据与实践参考。; 适合人群:具备自动控制理论基础和Matlab仿真经验,从事无人机控制、自动化、航空航天等相关领域研究的研发人员及高校研究生。; 使用场景及目标:①应用于多旋翼无人机姿态控制系统的设计与优化;②解决实际飞行因外界扰动和模型不精确导致的控制不稳定问题;③为鲁棒控制算法在飞行器的工程实现提供仿真验证平台。; 阅读建议:建议读者结合Matlab代码深入理解控制算法实现细节,重点关注系统建模与鲁棒控制器设计部分,并通过调整参数进行仿真测试,以掌握不同工况下控制性能的变化规律。

70,039

社区成员

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

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