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

作者&投稿:甘俊 (若有异议请与网页底部的电邮联系)
C语言怎么实现文件中部分数据的删除~

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

例如在原文件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...
");
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、首先我们输入【deleteScore】函数,先看整体代码,再一一解释。

2、在接下来我们输入永久循环语句。

3、再接下来,我们选择操作删除的方式。

4、再接下来我们就可以调用删除的函数了。

注意事项:
C语言提供了许多低级处理的功能,并仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。

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

为什么不想操作两个文件呢,简单易读,效率也要高过来回fseek,因为seek是要进入底层做系统调用的,所以很耗时!
如果你实在就想这么干,也不必要想楼上说的不断的fseek,把文件一次性或者多次读到内存里,然后修改,然后再写回去。

循环。设一变量为0,读到abc后的字符,变量++,fseek -字串长度+变量什,写入,再fseek到字串长度+变量+1,
具体代码如不会加我


C语言什么时候需要用到文件操作?
由于程序每一次运行都需要输入数据,这个输入的数据如果量很大,就非常花时间,而且一不小心,如果中间已经输错了一个数据,并且按了回车,那么就不能再更改,除非中上程序运行。但这时就需要重新输入数据。这是输入文件的情况,另外程序的处理得到了结果都输出在屏幕上,如果输出输出的数据量很大,那么如果...

C语言怎样对文件进行操作
01 打开Sublime Text软件,新建一个C语言文件,然后导入C语言库,如下图所示 02 接下来新建C语言的main函数,对文件的操作都会在main函数中进行,如下图所示 03 接下来调用C语言的fopen函数对文件进行打开操作,如下图

怎么对C语言中的文件进行内容添加,删除,查找的操作?
文件在进行读写操作之前要先打开,使用完毕要关闭。所谓打开文件,实际上是建立文件的各种有关信息,并使文件指针指向该文件,以便进行其它操作。关闭文件则断开指针与文件之间的联系,也就禁止再对该文件进行操作。 在C语言中,文件操作都是由库函数来完成的。在本章内将介绍主要的文件操作函数。 13.3.1 文件的打开(fop...

C语言如何读取文件?
打开箱子fp1,fp2,一次拿出1024个东西看一下,同时将他放到第二个箱子fp2里,至到箱子的东西完全拿出来,然后关闭两个箱子.例子都是差不多的,你看看stdlib中f还头的函数就可以了,但是在C中文件操作就是这样的:FILL *pf; \/\/声明指针,当然也可以是指针数组 FILE pf[2] 或 FILE **pf;pf =fopen(...

C语言编程通过文件操作建立文件file1.txt,怎么弄?
看你要在哪个磁盘建文件了,如C盘,可以这样:FILE *fin;fin=fopen("c:\\\\file1.txt","w");如果这样输入:FILE *fin;fin=fopen("file1.txt","w");即不指定哪个盘,这样会将文件建在所编的程序名下。

【C-13】C语言文件操作
在实际应用中,如配置文件读写,文件内容通常以键值对形式存储,如"key1:value1"。配置文件解析函数会处理文件中的有效信息,如获取行数、判断有效性、解析数据结构,最后通过key获取对应的value值,并在操作完毕后释放内存。在config.h和config.c中,编写这些函数以实现配置文件的读取和处理,而在主函数...

怎么用C语言对文件操作用特定内容替换其中某些内容
可以使用函数int fseek( FILE *stream, long offset, int origin );来定位你的文件指针。文件指针的位置决定你读写文件的起始位置。其中参数origin :表示从哪里开始偏移,值有:SEEK_SET: 文件开头 SEEK_CUR: 当前位置 SEEK_END: 文件结尾 参数offset:表示偏移的字节数,正数表示正向偏移,负数表示...

关于c语言的文件操作
用法:write(文件句柄,缓冲区地址,缓冲区字节长度<最大65534>);功能:将缓冲区的数据写入与handle相联的文件或设备中,handle是从creat、open、dup或dup2调用中得到的文件句柄。对于磁盘或磁盘文件,写操作从当前文件指针处开始,对于用O_APPEND选项打开的文件,写数据之前,文件指针指向EOF;对于设备,字节...

C语言中对文件的操作
通常有以下几种方式。Type1:在文件末尾插入数据。Type2:将文件所有字节集读入内容,作为修改,然后重新保存在储存器中。打开只是个代名词,比如说一个Box(箱子),你想在箱子里取东西,或者是放东西,都需要先把箱子打开。如果你想深入了解,那你需要研究文件系统(PS:这是操作系统核心的一部分)...

如何用C语言文件操作修改指定文件
MB 可以用缓冲区处理好修改,再写入文件。FILE× fopen fseek fwrite fclose PS:1)如果修改的内容,和原文件被修改的数据,字节数完全相同,直接找到要修改的地方,写入新内容就可以了。2)如果修改后的内容,和原文件被修改的数据,字节数不同,建议新建一个文件,否则很麻烦,要用读写方式打开。a)...

桃江县17344564178: 用C语编写删除文件操作代码 -
调命马来: 可以使用DOS命令或者使用windows API函数: DOS命令: #include "stdio.h" int main() { system("del d:\\ado.txt");return 0; } Windows API函数 #include "stdio.h"#include "windows.h" int main() { char path[MAX_PATH]; ...

桃江县17344564178: 用C语言完成删除文件某些内容
调命马来: 看看如何 随便瞎写的 能运行 #include <stdio.h> #define MAXLEN 1000000 char buf[MAXLEN]; int main(int argc, char *argv[]) { int i, c; int len; i = atoi(argv[2]); //把字符串转成长整形数 c = atoi(argv[4]); FILE *fp1, *fp2; fp1 = fopen(argv[5], "rb"); ...

桃江县17344564178: 我要用C语言实现固定文件删除,求各位大神帮忙 -
调命马来: #includeconst char ininame[]="配置文件.txt";void main() {File * pini = fopen(ininame,'r'); char fn[1024]; /*用于存放取出的全路径*/char cmd[2048]; /*用于存放将执行的命令*/ cmd[0]=0; //遍历配置文件,取出需删除文件或文件夹列表——...

桃江县17344564178: C语言中如何删除某个文本文件? -
调命马来: #include<stdio.h> int main(int argc,char *argv[]) { remove(argv[1]); //执行可执行程序是后跟你要删除的文件名,如./a.out a,代码中argv[1]就代表./a.out后面的第一个参数 return 0; } 这就是实现过程

桃江县17344564178: C语言怎么拷贝和删除文件 -
调命马来: 有以下两种方法可以使用:第一种:1 以读方式打开文件;2 将文件读到内存;3 关闭文件;4 以写方式打开文件;5 将原始数据写回文件,写的时候,跳过要删除的字符串.第二种:当文件比较大时,全部读入内存会有可能放不下.这时可以按照以下步骤:1 将原始文件备份成备份文件,可以通过copy或者系统复制命令实现;2 以写方式打开原文件;3 以读方式打开备份文件;4 依次读备份文件,并写入原文件,读的时候跳过要删除的部分.可以读后抛弃,也可以使用fseek函数实现;5 关闭两个文件;6 删除备份文件.

桃江县17344564178: C语言实现 批量删除文件 -
调命马来: #include <stdio.h>#include <string.h>#include <stdlib.h> int main(){ int i; char str[10]; char fn[255]; for(i=0;i<20;i++){ fn[0]=0; strcat(fn,"d:\\temp\\"); if (i<10) strcat(fn,"0"); strcat(fn,itoa(i,str,10)); strcat(fn,".txt"); printf("删除 %s\n",fn); //这一句显示要删除的文件,如果真的要删除文件,把下一的注释删除//remove(fn); //真的要删除文件了} }

桃江县17344564178: 操作系统中文件的创建、复制、删除,用C语言怎么编代码 -
调命马来: C语言调用API函数来完成,非常简单的.创建文件:CreateFile复制文件:CopyFile删除文件:DeleteFile下面几个(在C盘):#include int main(void) { CreateFile("C:\\1.txt",GENERIC_WRITE,0,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_...

桃江县17344564178: C语言 批量删除文本文件 -
调命马来: 先根据规则,生成文件名. 然后调用remove函数就好了 比如#include <stdio.h> int main() { char s[100]; int n; for(n = 0; n<100; n ++) { sprintf(s, "%02d.txt", n); remove(s); } return 0; }这个是删除00.txt到99.txt的

桃江县17344564178: 请教C语言如何删除文件夹里文件以及子目录 -
调命马来: 首先需要知道的是 文件夹不为空的时候是无法删除的.所以删除文件夹之前需要把其中的文件都删除 可以这样子操作 第一步 删除文件夹下的所有的文件 rm -f ./*/* 第二步 删除文件夹 rmdir *

桃江县17344564178: 如何在VS里用C语言删除文件夹? -
调命马来: 方法1、用文件删除函数如实现:函数名: remove 功 能: 删除一个文件 用 法: int remove(char *filename); 程序例: #includeint main(void) {char file[80];/* prompt for file name to delete */printf("File to delete: ");gets(file);/* delete the file...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网