當前位置:首頁 » 編程語言 » 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 之...