C语言文件中的数据怎么删除?

zq273632878 2010-07-15 11:38:33
如果我想要删除文件中某数据快的数据,要怎么删除,有一种方法是覆盖,怎么覆盖?如果不用覆盖有没有更好的方法?发一段代码:
void del() /*删除同学录中某个同学的信息*/
{
FILE *fp;
char str[10];

if ((fp=fopen("result.dat","rb+"))==NULL)
{
printf("打开文件错误!!!\n");
getch();
exit(1);
}

printf("请输入要删除的同学的姓名:");
scanf("%s",str);
system("cls");

while (fread(&stu,LEN,1,fp))
{
if (strcmp(stu.name,str)==0)
{
printf("该同学的信息为:\n");
printf("\n学号\t姓名\t联系电话\n");
printf("%s\t%s\t%s\n\n",stu.no,stu.name,stu.tel);

fseek(fp,-LEN,SEEK_CUR); /*位置指针移动到该数据块首位*/

fwrite("\0",LEN,1,fp);

fclose(fp);
break;
}

}
if (feof(fp))
{
printf("同学录中没有该同学的信息!!!\n");
}

}
...全文
1675 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
fdisksys 2010-07-24
  • 打赏
  • 举报
回复
我一般就是换一个文件
tracyjk 2010-07-23
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 yxl_xx 的回复:]
引用 7 楼 zq273632878 的回复:
引用 5 楼 yxl_xx 的回复:
不用覆盖也可以
可以清空指定缓存

怎么清空指定缓存啊?

用memset()函数
想清什么清什么,想从那清从那清
你可以查一下这个函数的用法
[/Quote]
+1
nkluckyfire 2010-07-23
  • 打赏
  • 举报
回复
将信息清除,再原位置写回
yxl_xx 2010-07-23
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 zq273632878 的回复:]
引用 5 楼 yxl_xx 的回复:
不用覆盖也可以
可以清空指定缓存

怎么清空指定缓存啊?
[/Quote]
用memset()函数
想清什么清什么,想从那清从那清
你可以查一下这个函数的用法
ForestDB 2010-07-18
  • 打赏
  • 举报
回复
帮顶。
zhangzhongke007 2010-07-17
  • 打赏
  • 举报
回复
我一般是赋为空值。覆盖也不错,清空缓存不清楚。
zq273632878 2010-07-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 yxl_xx 的回复:]
不用覆盖也可以
可以清空指定缓存
[/Quote]
怎么清空指定缓存啊?
leo_dengzx 2010-07-15
  • 打赏
  • 举报
回复
覆盖吧,这样还算是比较省事的。
zq273632878 2010-07-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zhzxlc_06 的回复:]
弱弱的问一句,你上面的代码能实现删除的功能吗?你是以rb方式打开文件的!
[/Quote]

我用的是rb+ 啊。。不是rb
yxl_xx 2010-07-15
  • 打赏
  • 举报
回复
不用覆盖也可以
可以清空指定缓存
chaoliu1024 2010-07-15
  • 打赏
  • 举报
回复
弱弱的问一句,你上面的代码能实现删除的功能吗?你是以rb方式打开文件的!
chaoliu1024 2010-07-15
  • 打赏
  • 举报
回复
把数据读到内存中,然后赋为空,在读回文件
漫步者、 2010-07-15
  • 打赏
  • 举报
回复
我觉得通过后面的记录去覆盖所删除的记录,还好些。

69,373

社区成员

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

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