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

我用结构写了一个程序,现在我想把数据文件中的一组数据删除掉,有什么好的办法没有啊,除了文件覆盖法。
我补充一下,我用结构的方式定义的数据,难后写进文件里面,但是我需要对文件中的某一个数据进行删除,比如我定义
struct{
char name[10];
char addr[10];
}
然后写进文件里面, lang chongqing
wang sichuan
zhang xianggang
现在我想删除第二个数据就是wang sichuan
该怎么办啊

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

温馨提示:内容为网友见解,仅供参考
第1个回答  2009-07-05
因为式结构定义的 基本类型是数组 所以
例如删除 name[1] addr[1](也就是第二个信息)
可以将个数组后面的向前移动
用一个循环本回答被提问者采纳
第2个回答  2009-07-04
没别的办法,就是重写文件
第3个回答  2009-07-04
不是很明白你的意思,你是不是只想删除文件中的部分数据啊,你可以在文件中的数据前后加标记,然后写程序删除标记之间的内容

如何在c语言中清空文件里的内容(很急)
1.打开Sublime文本,创建一个新的Czhidao文件,然后导入C库,如下所示。2.接下来,创建C语言的主函数,文件的操作将在主函数中进行,如下图所示。3.接下来,调用C语言的fopen函数打开文件,如下图所示。4.打开文件后,您可以通过fgetc函数读取并获取文件的内容,如下图所示。

C语言如何删除文件内容?
1、打开Sublime Text软件,新建一个C语言文件,然后导入C语言库 2、接下来新建C语言的main函数,对文件的操作都会在main函数中进行 3、接下来调用C语言的fopen函数对文件进行打开操作 4、当打开文件以后就可以通过fgetc函数读取文件里面的内容

如何用c语言实现删除文件中指定的数据;例如
1、首先我们输入【deleteScore】函数,先看整体代码,再一一解释。2、在接下来我们输入永久循环语句。3、再接下来,我们选择操作删除的方式。4、再接下来我们就可以调用删除的函数了。注意事项:C语言提供了许多低级处理的功能,并仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括类似嵌入式...

用C语言如何删除文件中的数据
1、重建一个临时文件,把原文件内容向临时文件里拷贝,遇到要删除的内容就跳过。结束后关闭文件,用remove("原文件名");把原文件删除,用rename("临时文件名","原文件名");把临时文件名改为原文件名就OK了。2、比如要按题面要求在原文件123.txt中删除编号为2和4的信息行,则可用以下代码实现:\/...

如何用C语言删除一个txt文档中的字符
1. 先使用fread函数或者其它方式将TXT文件的内容读取到字符数组中。2. 在字符数组中定位并删除要删除的字符。这一步骤可能涉及数组元素的重排序。3. 使用fwrite函数将修改后的字符数组内容写回文件中。值得注意的是,读取和写入的文件操作方式要对应,即如果在读取时使用fread,则在写入时应使用fwrite,反...

c语言 怎么将一个txt文件的所有信息删除
c语言将一个txt文件的所有信息删除的实现方法是以写模式打开一个同名文件,用来覆盖原来的文件,这样原来文件的内容将被删除。具体显示方法如下:int main(){ int i;FILE *data;data = fopen("peding.txt", "w");if(!data) { perror("对不起,文件找不到");return 1;} \/*循环写入100次 *...

c语言中如何对文件的部分内容删除
1、建立一个.c或者.cpp文件,还要建立一个.txt文件进行操作处理,并且写上c语言的编译预处理,头文件,主函数。2、定一个文件指针,具体格式FILE*指针名。3、调用fopen函数,对具体的格式为 文件指针=fopen("文件路径+文件名","读写方式");。4、对于读写的方式有很多,比如r是只读,w是打开文件...

怎么用C语言程序删除文本文件中的记录?
以a+模式打开,然后修改文件的指针。。。相关函数为 FILE *fp = fopen("c:\\\\*.txt","a+");int fseek(FILE *stream , long offset ,int whence);通过设置stream指向的FILE结构中的文件位置指示器的值实现对文件读写指针的定位。定位值是从起始点whence开始,加上以字节为单位的偏移量offset所得...

运用C语言如何删除文件中的某条数据
fgets(tmp, 256, fp); \/*把后面的数据缓存*\/ fseek(fp, pos, 0); \/*移动到插入位置*\/ fprintf(fp, insert); \/*插入,就是写入数据*\/ fprintf(fp, tmp); \/*把原来的数据再写回来, 完成*\/ \/*3、01读取后++两次,并重新写回文件*\/ rewind(fp);fscanf(fp, "%x", &i); ...

c语言怎么删除文件中指定数据
1、参数stream 为已打开的文件指针,2、参数offset 为根据参数whence 来移动读写位置的位移数。参数 whence 为下列其中一种:SEEK_SET 从距文件开头offset 位移量为新的读写位置. SEEK_CUR 以目前的读写位置往后增加offset 个位移量.SEEK_END 将读写位置指向文件尾后再增加offset 个位移量. 当whence ...

相似回答