也就是说假如一个文件中存放了内容 abcdefghijk
现在我要写入IJK到文件中
但是我只想让IJK覆盖原来ijk 而不影响前面的abcdefgh
好吧!不过以w+打开文件,
写入新的数据会将原来的全部数据覆盖掉
当然根据系统的不同,可能有所区别
经过对所有的读写方式测试:
我发现用r+ 方式打开 可以达到我想要的效果。
那你的fwrite是怎么使用的?你贴下代码。fwrite可以限制写入数据的大小的。例如这里:
fwrite(str2, 3, 1, pf);//一次写入3个字节的数据到文件
程序示例
程序示例1 #include #include //为了使用exit() int main() { char ch; FILE* fp; char fname[50]; //用于存放文件名 printf("输入文件名:"); scanf("%s",fname); fp=fopen(fname,"r"); //只供读取 if(fp==NULL) //如果失败了 { printf("错误!"); exit(1); //中止程序 } //getc()用于在打开文件中获取一个字符 while((ch=getc(fp))!=EOF) putchar(ch); fclose(fp); //关闭文件 return 0; } 注意!初学者往往会犯一个错误,即在输入文件名时不加后缀名,请注意加上! 程序示例2[2] #include FILE *stream, *stream2; int main( void ) { int numclosed; // Open for read (will fail if file "crt_fopen.c" does not exist) if( (stream = fopen( "crt_fopen.c", "r" )) == NULL ) // C4996 // Note: fopen is deprecated; consider using fopen_s instead printf( "The file 'crt_fopen.c' was not opened\n" ); else printf( "The file 'crt_fopen.c' was opened\n" ); // Open for write if( (stream2 = fopen( "data2", "w+" )) == NULL ) // C4996 printf( "The file 'data2' was not opened\n" ); else printf( "The file 'data2' was opened\n" ); // Close stream if it is not NULL if( stream) { if ( fclose( stream ) ) { printf( "The file 'crt_fopen.c' was not closed\n" ); } } // All other files are closed: numclosed = _fcloseall( ); printf( "Number of files closed by _fcloseall: %u\n", numclosed ); } [3]
我现在的文件有好几M ,写入buf 实在是……
还不如另外创建一个文件
fprintf函数输入时是否会覆盖文件中原有内容?
不会影响原文件中的数据\\r\\nfopen( file ,"r+"); \\r\\n"r+" "a+" "w+" 等方式打开为读写模式,这时,写数据前,要先定位文件指针,如果想改动文件中的内容,则写入的数据长度与要覆盖的数据长度要一致才可以,
怎么用C语言对文件操作用特定内容替换其中某些内容
可以使用函数int fseek( FILE *stream, long offset, int origin );来定位你的文件指针。文件指针的位置决定你读写文件的起始位置。其中参数origin :表示从哪里开始偏移,值有:SEEK_SET: 文件开头 SEEK_CUR: 当前位置 SEEK_END: 文件结尾 参数offset:表示偏移的字节数,正数表示正向偏移,负数表示...
c语言编程中怎么实现数据的覆盖!
用读写r+ 或 w+ 方法打开。if((fp=fopen("USER.txt","r+"))==NULL)任何时候想回到文件一开始,就用回绕函数:rewind(fp);这样再写就覆盖了。"a" 打开来 是 从文件尾开始添加新内容。
C语言中fwrite函数输入时会覆盖文件以前的数据吗?
(1)buffer:是一个指针,对fwrite来说,是要获取数据的地址;(2)size:要写入内容的单字节数;(3)count:要进行写入size字节的数据项的个数;(4)stream:目标文件指针;(5)返回实际写入的数据项个数count。是否覆盖决定于stream FILE *stream=fopen("文件名","mod");其中mod如下:(1)r ...
C语言中 怎样读取一个文本文档中的特定位置的特定长度的字符
1)fopen函数,用于打开文件,返回一个文件指针,fwrite函数,写入文件(也就是你要的result文件),及fclose函数,文件操作完时要关闭文件指针.(2)fseek函数,用于文件指针的定位,也就是将文件指针放到你要操作的文件中的某个位置.(3)然后用的就是fread函数,用于读取一块数据,你可以指定数据的长度,...
C语言中把数据储存在txt文件时,原来txt中的内容被覆盖了。
你fopen函数选择的是参数不对造成的。在C语言中,这个函数的参数由r,w,a,t,b,+六个字符拼成,各字符的含义是:r(read):读 w(write):写 a(append):追加 t(text):文本文件,可省略不写 b(binary):二进制文件 +:读和写 你在参数中肯定没有使用a,所以不是追加,而是从头写入了。
C语言Fopen函数的用法
C语言中的fopen函数是一个强大的工具,用于以特定方式打开文件。其基本调用形式是:`FILE *fp = fopen("文件名", "使用文件方式");`其中,fp是一个指向FILE类型的指针,"文件名"是需要操作的文件的路径,而"使用文件方式"决定了操作类型,如读取、写入、追加或二进制模式。例如,`fp = fopen("...
在C语言中,fwrite,fputs函数对文件的写入是否会覆盖原文件?还是在被读...
这个取决于fopen打开文件时传入的参数如果以追加方式打开,就是写到后面,如果以写方式打开,就是覆盖写,如果把文件指针移动到末尾再写就是写后面
C语言中fread写入的数据时是覆盖原来的数据,还是接在原有数据的后面...
fread是读数据的...向文件写数据时,看是怎么打开的,FILE *fp = fopen(strFileName, "w");这种是覆盖原有数据 FILE *fp = fopen(strFileName, "a");这种是在原有数据后面追加
c语言fwrite 覆盖旧数据
不是的以外包打开会自动把文件以前的内容全部清空,再进行你写的操作,并没有覆盖一说,如果不想覆盖,就用ab追加模式,或者rb读的模式 rb模式不会请数据,这时候写数据才会发生那种数据覆盖的情况