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

来源:百度知道 编辑:UC知道 时间:2024/04/27 20:48:14
这是我突然想到的一个问题,我想了好半天也没想到解决方法。

假设我有这么一段内容: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//将已删除指定字符串后剩余的所有数据