c語言fseek_cur,c語言fseek使用時的文件頭尾有存放東西嗎

本文目錄一覽:

C語言 文件指針 fseek

fptr = fopen(roominfo, “rb+”); //你的文件是以讀寫方式打開的

當一個文件以讀寫方式打開,從讀文件切換到寫文件或者相反操作,必須刷新文件緩衝區(就是把文件的修改寫入磁碟),而fseek操作會引發文件緩衝區的刷新。在你的代碼里fwrite以後,下次判斷是fread,所以如果不刷新文件緩衝區,fread不會讀取到寫入的數據,而fseek(fptr, 0,SEEK_CUR);就是在不移動文件指針的情況下,把緩衝區數據寫入文件,保證fread會讀取到新數據,這是常用手段

在C語言中fseek()的功能

fseek()是重定位流(數據流/文件)上的文件內部位置指針。

注意:文件指針指向文件/流。位置指針指向文件內部的位元組位置,隨著文件的讀取會移動,文件指針如果不重新賦值將不會改變或指向別的文件。

如果執行成功,stream將指向以fromwhere為基準,偏移offset(指針偏移量)個位元組的位置,函數返回0。如果執行失敗(比如offset取值大於等於2*1024*1024*1024,即long的正數範圍2G),則不改變stream指向的位置,函數返回一個非0值。

擴展資料:

注意事項

fseek函數的文件指針,應該為已經打開的文件。如果沒有打開的文件,那麼將會出現錯誤。 fseek函數也可以這樣理解,相當於在文件當中定位。

這樣在讀取規律性存儲文件時可以利用其OFFSET偏移量讀取文件上任意的內容。

fseek函數一般用於二進位文件,也可以用於文本文件。用於文本文件操作時,需特別注意只有fseek(fp, 0, SEEK_SET) 和 fseek(fp, ftell(fp), SEEK_SET)能確保結果符合預期。

參考資料來源:百度百科-fseek

C語言fseek 問題

#include stdio.h

int main(void) {

FILE *stream;

int c,n = 0,filesize;

stream = fopen(“MYFILE.TXT”, “wt”);

fprintf(stream, “This is a test\n”);

fclose(stream);

stream = fopen(“MYFILE.TXT”, “r+”);

while(n  4) {

filesize = 0;

while((c = fgetc(stream)) != EOF) {

printf(“%c”,c);

++filesize;

}

fseek(stream,-(++filesize),SEEK_CUR);

fseek(stream,0,SEEK_CUR);

++n;

}

fclose(stream);

return 0;

}

***** fseek(stream,0,SEEK_CUR); *****

這一句很重要(專家說的),用來改變文件的讀狀態(我也不明白這個狀態),在修改數據文件時,這一句貌似廢話的話所起的作用更是重要了。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/246744.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 13:16
下一篇 2024-12-12 13:16

相關推薦

發表回復

登錄後才能評論