C语言中如何删除文件中的一条记录

2024-12-19 20:00:41
推荐回答(3个)
回答1:

1、删除文件部分内容的大概步骤:新建一个临时文件,把原文件内容向临时文件里拷贝,遇到要删除的内容就跳过。结束后关闭文件,用remove("原文件名");把原文件删除,用rename("临时文件名","原文件名");把临时文件名改为原文件名。

2、例如在原文件123.txt中删除以2和以4编号开头的行,可用以下代码实现:

#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;
}

回答2:

最近做数据结构课设,也在想这个问题,想到的方法比较笨,但还算可行吧。数据最先存储的时候用一个数组record[100],把数据存进去,然后写入文件,之后有要删除的数据的话,就修改数组record[100],再重新写入文件就好了。

回答3:

你去请教专业的回答的人吧,向他提问。