用C语言如何删除文件中的数据

我用结构写了一个程序,现在我想把数据文件中的一组数据删除掉,有什么好的办法没有啊,除了文件覆盖法。我补充一下,我用结构的方式定义的数据,难后写进文件里面,但是我需要对文件... 我用结构写了一个程序,现在我想把数据文件中的一组数据删除掉,有什么好的办法没有啊,除了文件覆盖法。
我补充一下,我用结构的方式定义的数据,难后写进文件里面,但是我需要对文件中的某一个数据进行删除,比如我定义
struct{
char name[10];
char addr[10];
}
然后写进文件里面, lang chongqing
wang sichuan
zhang xianggang
现在我想删除第二个数据就是wang sichuan
该怎么办啊
展开
 我来答
tattackor
2015-10-30 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:896万
展开全部

1、重建一个临时文件,把原文件内容向临时文件里拷贝,遇到要删除的内容就跳过。结束后关闭文件,用remove("原文件名");把原文件删除,用rename("临时文件名","原文件名");把临时文件名改为原文件名就OK了。


2、比如要按题面要求在原文件123.txt中删除编号为2和4的信息行,则可用以下代码实现:

//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
#include "stdlib.h"
int main(void){
    FILE *fin,*ftp;
    char a[1000];
    fin=fopen("123.txt","r");//读打开原文件123.txt
    ftp=fopen("tmp.txt","w");//写打开临时文件tmp.txt
    if(fin==NULL || ftp==NULL){
        printf("Open the file failure...\n");
        exit(0);
    }
    while(fgets(a,1000,fin))//从原文件读取一行
        if(a[0]!='2' && a[0]!='4')//检验是要删除的行吗?
            fputs(a,ftp);//不是则将这一行写入临时文件tmp.txt
    fclose(fin);
    fclose(ftp);
    remove("123.txt");//删除原文件
    rename("tmp.txt","123.txt");//将临时文件名改为原文件名
    return 0;
}
haoanbeier
2009-07-05 · 超过10用户采纳过TA的回答
知道答主
回答量:32
采纳率:0%
帮助的人:0
展开全部
因为式结构定义的 基本类型是数组 所以
例如删除 name[1] addr[1](也就是第二个信息)
可以将个数组后面的向前移动
用一个循环
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
vbtraz
2009-07-04 · TA获得超过5532个赞
知道大有可为答主
回答量:4152
采纳率:0%
帮助的人:4455万
展开全部
没别的办法,就是重写文件
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友a0ad81b73
2009-07-04
知道答主
回答量:54
采纳率:0%
帮助的人:0
展开全部
不是很明白你的意思,你是不是只想删除文件中的部分数据啊,你可以在文件中的数据前后加标记,然后写程序删除标记之间的内容
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式