如何用c语言文件操作来实现删除文件某段内容功能?

这是我突然想到的一个问题,我想了好半天也没想到解决方法。

假设我有这么一段内容:temp.txt
123456789abcdefg

如何实现删除其中的abc这几个字,并且不通过两个文件指针、不操作两个文件 ?

谢谢大家

C语言删除磁盘文件内容中间一段字符串的方法
假定磁盘文件中连续存放了相同长度的若干段字符串,要删除中间的某一段字符串,剩下的继续保存在文件中。

代码如下,有比较清楚的注释。
//变量定义部分省略
file=fopen(pathname,"rb");//打开磁盘文件,file是文件指针,pathname是磁盘文件的路径和文件名
filedata[0] = (char *)malloc(LENGTH*sizeof(char));//filedata是指针数组用于存放删除后的临时数据,LENGTH是每个字符串的相同长度
//找出要删除的字符串,并将其它的字符串存入临时指针数组
for(found=0,y=0;fread(filedata[y],LENGTH,1,file); )//found用于判断是否找到要删除的字符串
{
*(filedata[y]+LENGTH)='\0';
if(found==0)//没有找到前才进行比较
{
if( strcmp(deldata,filedata[y])==0 )//deldata是要删除的字符串
{
found=1;
//找到要删除的字符串,从临时存放的指针数组中删除
free(filedata[y]);
y--;
}
}
y++;
filedata[y] = (char *)malloc((LENGTH+1)*sizeof(char));
}
free(filedata[y]);//y多加了1,多申请了一段内存空间
fclose(file);
if(found==0)

{
printf("没有找到要删除的字符串。\n");

}

else//将已删除指定字符串后剩余的所有数据从临时存放的指针数组中重新保存到磁盘文件
{
file=fopen(pathname,"wb");
for(m=0;m
{
fwrite(filedata[m],LENGTH,1,file);
free(filedata[m]);//释放内存
}
fclose(file);
}
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-03-15
为什么不想操作两个文件呢,简单易读,效率也要高过来回fseek,因为seek是要进入底层做系统调用的,所以很耗时!
如果你实在就想这么干,也不必要想楼上说的不断的fseek,把文件一次性或者多次读到内存里,然后修改,然后再写回去。本回答被提问者和网友采纳
第2个回答  2008-12-15
循环。设一变量为0,读到abc后的字符,变量++,fseek -字串长度+变量什,写入,再fseek到字串长度+变量+1,
具体代码如不会加我

如何用c语言文件操作来实现删除文件某段内容功能?
假定磁盘文件中连续存放了相同长度的若干段字符串,要删除中间的某一段字符串,剩下的继续保存在文件中。 代码如下,有比较清楚的注释。 \/\/变量定义部分省略 file=fopen(pathname,"rb");\/\/打开磁盘文件,file是文件指针,pathname是磁盘文件的路径和文件名filedata[0] = (char *)malloc(LENGTH*sizeof(char));\/\/fi...

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

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

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

c#实现遍历文件夹里的所有文件内容,然后删除某个内容?
C是一个通用的计算机编程语言创建的丹尼斯·里奇在1972年贝尔实验室。它是一种程序性和低级语言,提供对系统内存的访问。C是一个成千上万的计算机编程语言用来创建列表的指令。今天仍然非常广泛使用和影响力。有许多资源网上学习C语言,比如learn-c.org提供了一个免费互动教程。

c语言实现文件内容某行删除
整体思路如下:首先,找到找到要删除的那一行的行号,假如是j行,然后把指向文件的指针定位到j+1行处(可以使用fseek函数,Linux下可以使用lseek函数);读取一行(此时的文件指针已到达改行的末尾处,也可以认为是到了下一行的开始处),再把文件指针定位到j行,把刚才读出的再写会,使用循环直至文件结束...

c语言删除文件中的指定的一行数据怎么做
一般有两个方法实现这个功能:1.把要保留的内容写到另一个文件中,要删掉的内容就不用写了。2.把要保留的内容存储到一个字符串变量中,要删掉的内容不用存储,最后把这个字符串再写回到原文件中覆盖原来的内容。例程:include<stdio.h>struct data{ int bianhao; char fenlei[10]; char ...

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

C语言文件操作删除任意文件中的最后一行文本
需要用系统调用,程序在windows下顺利通过测试,用法 程序 文件名 include <stdio.h>#include <windows.h>#include <io.h>typedef int bool;bool setFileLength(FILE* file, unsigned int len){#ifdef _WIN32 int fd; HANDLE hfile; fseek(file, len, SEEK_SET); fd = _fileno(file); h...

如何用C语言删除一个txt文档中的字符
C语言修改TXT文档的内容,需要通过读取、修改、写入的过程来实现。步骤如下:1. 先使用fread函数或者其它方式将TXT文件的内容读取到字符数组中。2. 在字符数组中定位并删除要删除的字符。这一步骤可能涉及数组元素的重排序。3. 使用fwrite函数将修改后的字符数组内容写回文件中。值得注意的是,读取和写入...

相似回答