当前位置:首页 » 编程语言 » c语言读写覆盖
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言读写覆盖

发布时间: 2022-09-07 18:56:14

A. c语言,怎将文件中指定位置上的数据更新后覆盖

你需要解决两个问题。
1、待更改的文件应该是以“块”状形式写入的,比如fwrite((void *)student stu,sizeof(student),1L,fp);,只有这样才能准确定位待更改“块”的位置。而以fprintf()写入的文件,可能由于数据的不同,每个结构数据占用的空间就不同,即使你能准确定位,但写入新数据后,若长度短了,剩余的空间可能造成混乱,若长度长了,可能造成”覆盖“。
2、打开文件同时用于”读/写“时,打开的格式是"r+"或”w+“。
另外,还需要搞清楚文件读写指针的使用特点,前两个问题解决后再讨论。

B. C语言如何 覆盖写入到文件最后一行

覆盖写入最后一行还是比较麻烦的。

因为判断最后一行的开始本身就不容易
新写入的数据如果比原本行更少,使用读写方式还会出现空洞
所以 最简单的方法就是把原本文件数据都读出来
然后以只写的方式 重新打开,清空文件
把之前的数据写入, 除了最后一行
最后 再写入新数据。

C. c语言编程中怎么实现数据的覆盖!

用读写r+ 或 w+ 方法打开。
if((fp=fopen("USER.txt","r+"))==NULL)

任何时候想回到文件一开始,就用回绕函数:
rewind(fp);
这样再写就覆盖了。

"a" 打开来 是 从文件尾开始添加新内容。

D. c语言如何做到把文本文件读取操作后覆盖原文件保存

先用r模式读取文件内容并保存在适当的数组中,fclose。你可以修改其中的数据,然后用w模式读取相同文件名,再写入数据。

E. c语言文件读写覆盖的问题

位置是共用的
fscanf移动了rp的当前位置
所以在fprintf(rp,"%d",j);
之前要使用
fseek(rp, 0, SEEK_SET);
把位置移到前面

F. c语言 打开文件 先读取再完全覆盖

先用读方式打开文件,读取完毕后关闭文件。再用相同的文件名写打开,原来的文件就自动清空了。以文件名是XXX.txt为例——
FILE
*fp;
fp=fopen("XXX.txt","r");//读打开
...
...
fclose(fp);//关闭文件
fp=fopen("XXX.txt","w");//写打开,原来的文件就没有了
...
...
不能先写打开,不然就读不到内容了。

G. c语言文件写的时候如何避免覆盖现象,就是每次都是从头开始写。。

将你要实现的代码贴出来看看啊,不然不同的函数接口,或者不同的调用地方是不一样的。
比如是谭浩强那本书里说的 fopen时 ,注意给对应的mode正确的参数即可。
函数原型:FILE * fopen(const char * path,const char * mode);
返回值:文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno 中。
参数说明: 参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态。
mode有下列几种形态字符串:
r 以只读方式打开文件,该文件必须存在。
r+ 以可读写方式打开文件,该文件必须存在。
rb+ 读写打开一个二进制文件,允许读数据。
rw+ 读写打开一个文本文件,允许读和写。
w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)
wb 只写打开或新建一个二进制文件;只允许写数据。
wb+ 读写打开或建立一个二进制文件,允许读和写。
wt+ 读写打开或着建立一个文本文件;允许读写。
at+ 读写打开一个文本文件,允许读或在文本末追加数据。
ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。

如果你是要实现灵活控制写入的位置,除了在open的时候让其可写,还需要配合使用fseek
int fseek(FILE *stream, long offset, int fromwhere);
void fun(char *filename, STU n)
{
FILE *fp;
fp = fopen(filename, "rb+");
fseek(fp, -1L*sizeof(STU),SEEK_END);
fwrite(&n, sizeof(STU), 1, fp);
fclose(fp);
}
还不清楚,请网络/Google 之...