如何用c编辑文件夹内容|怎么用C语言修改文件内容

如何用c编辑文件夹内容|怎么用C语言修改文件内容的第1张示图

㈠ 怎么用C语言对文件操作用特定内容替换其中某些内容

如果复只想修改文件一部分。可以制使用函数int fseek( FILE *stream, long offset, int origin );来定位你的文件指针。文件指针的位置决定你读写文件的起始位置。其中参数origin :表示从哪里开始偏移,值有:SEEK_SET: 文件开头SEEK_CUR: 当前位置SEEK_END: 文件结尾参数offset:表示偏移的字节数,正数表示正向偏移,负数表示负向偏移。比如你先读取文件内容,同时做判断,找到你要改的内容时,调用函数fseek(fp,10L,SEEK_CUR);把文件指针移动到离当前指针位置10个字节的地方(我们假设当前位置偏移10个字节就是你要修改的起始位置);这样你之后的读写都是从这个位置开始。不过要注意的是,你从这位置开始写新的内容,可以覆盖原内容,所以如果新的内容比你想覆盖的内容长的话,会把后面你想保留的内容也覆盖掉。这种思路,你想要实现修改指定内容,还需要把修改内容之后的数据也读出来备份,再一起写进去。所以最简单,还是直接生成新的文件替换原文件。

㈡ c语言中如何对文件中的某些数据进行修改

如果文件较短,可以全部读到内存,修改后写入文件。如果文件很大,没有好办法,只能在新文件中写入原文件修改的内容,然后删除原来的文件,重新命名。

㈢ c语言怎么做到对文件中的内容进行更改或删除块写入和读取怎么使用定义结构体数组怎么用

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.txtftp=fopen("tmp.txt","w");//写打开临时文件tmp.txtif(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.txtfclose(fin);fclose(ftp);remove("123.txt");//删除原文件rename("tmp.txt","123.txt");//将临时文件名改为原文件名return 0;}

㈣ c语言怎么创建文件,修改文件内容。

1.fopen()fopen的原型是:FILE*fopen(constchar*filename,constchar*mode),fopen实现三个功能:为使用而打开一个流,把一个文件和此流相连接,给此流返回一个FILR指针。参数filename指向要打开的文件名,mode表示打开状态的字符串,其取值如下:字符串含义"r"以只读方式打开文件"w"以只写方式打开文件"a"以追加方式打开文件"r+"以读/写方式打开文件,如无文件出错"w+"以读/写方式打开文件,如无文件生成新文件一个文件可以以文本模式或二进制模式打开,这两种的区别是:在文本模式中回车被当成一个字符’’,而二进制模式认为它是两个字符0x0D,0x0A;如果在文件中读到0x1B,文本模式会认为这是文件结束符,也就是二进制模型不会对文件进行处理,而文本方式会按一定的方式对数据作相应的转换。系统默认的是以文本模式打开,可以修改全部变量_fmode的值来修改这个设置,例如_fmode=O_TEXT;就设置默认打开方式为文本模式;而_fmode=O_BINARY;则设置默认打开方式是二进制模式。我们也可以在模式字符串中指定打开的模式,如"rb"表示以二进制模式打开只读文件,"w+t"或"wt+"表示以文本模式打开读/写文件。此函数返回一个FILE指针,所以申明一个FILE指针后不用初始化,而是用fopen()来返回一个指针并与一个特定的文件相连,如果成败,返回NULL.例:以下是引用片段:FILE*fp;if(fp=fopen("123.456","wb"))puts("打开文件成功");elseputs("打开文件成败");2.fclose()fclose()的功能就是关闭用fopen()打开的文件,其原型是:intfclose(FILE*fp);如果成功,返回0,失败返回EOF。在程序结束时一定要记得关闭打开的文件,不然可能会造成数据丢失的情况,我以前就经常犯这样的错误。例:fclose(fp);3.fputc()向流写一个字符,原型是intfputc(intc,FILE*stream);成功返回这个字符,失败返回EOF。例:fputc(’X’,fp);4.fgetc()从流中读一个字符,原型是intfputc(FILE*stream);成功返回这个字符,失败返回EOF。例:charch1=fgetc(fp);5.fseek()此函数一般用于二进制模式打开的文件中,功能是定位到流中指定的位置,原型是intfseek(FILE*stream,longoffset,intwhence);如果成功返回0,参数offset是移动的字符数,whence是移动的基准,取值是:符号常量值基准位置SEEK_SET0文件开头SEEK_CUR1当前读写的位置SEEK_END2文件尾部例:fseek(fp,1234L,SEEK_CUR);//把读写位置从当前位置向后移动1234字节(L后缀表示长整数)fseek(fp,0L,2);//把读写位置移动到文件尾6.fputs()写一个字符串到流中,原型intfputs(constchar*s,FILE*stream);例:fputs("ILoveYou",fp);7.fgets()从流中读一行或指定个字符,原型是char*fgets(char*s,intn,FILE*stream);从流中读取n-1个字符,除非读完一行,参数s是来接收字符串,如果成功则返回s的指针,否则返回NULL。例:如果一个文件的当前位置的文本如下:Love,IHaveBut……..如果用fgets(str1,4,file1);则执行后str1="Lov",读取了4-1=3个字符,而如果用fgets(str1,23,file1);则执行str="Love,IHave",读取了一行(包括行尾的’’)。8.fprintf()按格式输入到流,其原型是intfprintf(FILE*stream,constchar*format[,argument,…]);其用法和printf()相同,不过不是写到控制台,而是写到流罢了。例:fprintf(fp,"%2d%s",4,"Hahaha");9.fscanf()从流中按格式读取,其原型是intfscanf(FILE*stream,constchar*format[,address,…]);其用法和scanf()相同,不过不是从控制台读取,而是从流读取罢了。例:fscanf(fp,"%d%d",&x,&y);10.feof()检测是否已到文件尾,是返回真,否则返回0,其原型是intfeof(FILE*stream);例:if(feof(fp))printf("已到文件尾");11.ferror()原型是intferror(FILE*stream);返回流最近的错误代码,可用clearerr()来清除它,clearerr()的原型是voidclearerr(FILE*stream);例:printf("%d",ferror(fp));12.rewind()把当前的读写位置回到文件开始,原型是voidrewind(FILE*stream);其实本函数相当于fseek(fp,0L,SEEK_SET);例:rewind(fp);13.remove()删除文件,原型是intremove(constchar*filename);参数就是要删除的文件名,成功返回0。例:remove("c:\io.sys");14.fread()从流中读指定个数的字符,原型是size_tfread(void*ptr,size_tsize,size_tn,FILE*stream);参数ptr是保存读取的数据,void*的指针可用任何类型的指针来替换,如char*、int*等等来替换;size是每块的字节数;n是读取的块数,如果成功,返回实际读取的块数(不是字节数),本函数一般用于二进制模式打开的文件中。例:以下是引用片段:charx[4230];FILE*file1=fopen("c:\msdos.sys","r");fread(x,200,12,file1);//共读取200*12=2400个字节15.fwrite()与fread对应,向流中写指定的数据,原型是size_tfwrite(constvoid*ptr,size_tsize,size_tn,FILE*stream);参数ptr是要写入的数据指针,void*的指针可用任何类型的指针来替换,如char*、int*等等来替换;size是每块的字节数;n是要写的块数,如果成功,返回实际写入的块数(不是字节数),本函数一般用于二进制模式打开的文件中。例:以下是引用片段:charx[]="ILoveYou";fwire(x,6,12,fp);//写入6*12=72字节将把"ILove"写到流fp中12次,共72字节16.tmpfile()其原型是FILE*tmpfile(void);生成一个临时文件,以"w+b"的模式打开,并返回这个临时流的指针,如果失败返回NULL。在程序结束时,这个文件会被自动删除。例:FILE*fp=tmpfile();17.tmpnam();其原型为char*tmpnam(char*s);生成一个唯一的文件名,其实tmpfile()就调用了此函数,参数s用来保存得到的文件名,并返回这个指针,如果失败,返回NULL。例:tmpnam(str1);

㈤ 各位大大,救救!如何用C语言修改文件的某部分内容!!!!

两种方法 第一 全部读入内存 修改后重新存入文件第二 边读边写到另一新建文件 要修改的部分修改后存入新建文件 其他部分原封不动写入写完删掉原先文件 将这个新的改为删掉那个的名字你要哪种代码?

㈥ C语言怎么修改文件内容

提供思路:先一组一组数据读取,然后进行比较,看是不是你要修改的数据(如果是你要修改的数据,那此时文件的指针已经指向下一组数据了),然后用fseek(fp,-sizeof(type),SEEK_CUR);使文件指针指向该数据块(fp为文件指针,sizeof(type)为数据长度,type是我指定,你可以换成你需要的数据类型,比如int或是struct等) 如果你知道数据是第几组就更好了,直接用fseek(fp,(n-1)*sizeof(type),SEEK_SET);就能找到位置了 用前面两种方法的前提是,你存入数据的时候用的都是以数据块的方式写入的同一种数据(比如只用fwrite()函数写入的struct类型数据),如果用的是复合方式写入,比如用了fwrite()、fputc()、fprintf(),这样的话,定位就有问题了。

㈦ C语言怎么修改文件信息

把文件里面数据读出来,在内存里面改掉,再把改后的数据写回去c操作文件没有修改的方式,只有追加,不过也不适合你的需最常用的就是这样,先读,改 再重写

㈧ 怎么用C语言修改文件内容

提供思路:复先一组制一组数据读取,然后进行比较,看是不是你要修改的数据(如果是你要修改的数据,那此时文件的指针已经指向下一组数据了),然后用fseek(fp,-sizeof(type),seek_cur);使文件指针指向该数据块(fp为文件指针,sizeof(type)为数据长度,type是我指定,你可以换成你需要的数据类型,比如int或是struct等)如果你知道数据是第几组就更好了,直接用fseek(fp,(n-1)*sizeof(type),seek_set);就能找到位置了用前面两种方法的前提是,你存入数据的时候用的都是以数据块的方式写入的同一种数据(比如只用fwrite()函数写入的struct类型数据),如果用的是复合方式写入,比如用了fwrite()、fputc()、fprintf(),这样的话,定位就有问题了。

㈨ C语言怎么修改文件内容

先一组一组数据读取,然后进行比较,看是不是要修改的数据(如果是要修改专的数据,那此时文件的指针已属经指向下一组数据了),然后用fseek(fp,-sizeof(type),SEEK_CUR);使文件指针指向该数据块(fp为文件指针,sizeof(type)为数据长度,type是指定,可以换成需要的数据类型,比如int或是struct等)。

㈩ 如何用C语言文件操作修改指定文件

一个c语言读写文件程序:#include"stdio.h"#includemain(){file*fp1;//定义文件流指针,用于打开读取的文件file*fp2;//定义文件流指针,用于打开写操作的文件chartext[1024];//定义一个字符串数组,用于存储读取的字符fp1=fopen("d:\\a.txt","r");//只读方式打开文件a.txtfp2=fopen("d:\\b.txt","w");//写方式打开文件a.txtwhile(fgets(text,1024,fp1)!=null)//逐行读取fp1所指向文件中的内容到text中{puts(text);//输出到屏幕fputs(text,fp2);//将内容写到fp2所指向文件中}fclose(fp1);//关闭文件a.txt,有打开就要有关闭fclose(fp2);//关闭文件b.txt}

未经允许不得转载:山九号 » 如何用c编辑文件夹内容|怎么用C语言修改文件内容

赞 (0)