fread 和 fseek 函式二次理解

2021-06-06 13:48:39 字數 2215 閱讀 8885

fseek

原型:int fseek(file *stream, long offset, int fromwhere);

功能:重定位流(資料流/檔案)上的檔案內部位置指標

注意:不是定位檔案指標(檔案指標是 file * fp 這樣的),檔案指標指向檔案/流。位置指標指向檔案內部的位元組位置,隨著檔案的讀取會移動,檔案指標如果不重新賦值將不會改變指向別的檔案。

函式設定檔案指標stream的位置。如果執行成功,stream將指向以fromwhere(偏移起始位置:檔案頭(seek_set)0,當前位置(seek_cur)1,檔案尾(seek_end)2)為基準,偏移offset(指標偏移量)個位元組的位置。如果執行失敗(比如offset超過檔案自身大小),則不改變stream指向的位置。

返回值:成功,返回0,失敗返回-1,並設定errno的值,可以用perror()函式輸出錯誤。

第乙個引數stream為檔案指標

第二個引數offset為偏移量,正數表示正向偏移,負數表示負向偏移

第三個引數origin設定從檔案的**開始偏移,可能取值為:seek_cur、 seek_end 或 seek_set

seek_set: 檔案開頭

seek_cur: 當前位置

seek_end: 檔案結尾

其中seek_set,seek_cur和seek_end依次為0,1和2.

簡言之:

fseek(fp,100l,0);把檔案內部指標移動到離檔案開頭100位元組處;

fseek(fp,100l,1);把檔案內部指標移動到離檔案當前位置100位元組處;

fseek(fp,-100l,2);把檔案內部指標退回到離檔案結尾100位元組處。

fread的功 能: 從乙個流中讀資料

fread 在使用過程中,首先由 file 確定乙個檔案指標 fp,fp 通過 fopen 將物件確定,fread此時對檔案的操作是 檔案內部位置指標移動乙個位元組再讀取乙個位元組

函式原型: size_t fread( void * buffer , size_t size , size_t count , file * stream );

參 數:

1.用於接收資料的位址(指標)(buffer )

2.單個元素的大小(size) :單位是位元組而不是位,例如讀取乙個整型數就是2個位元組

3.元素個數(count )

4.提供資料的檔案指標(stream)

返回值:

(1)成功時返回實際讀入的元素個數

(2)若檔案達到末尾,則返回0

(3)出錯時,返回-1

fread函式和fwrite函式

1.函式功能 用來讀寫乙個資料塊。2.一般呼叫形式 fread buffer,size,count,fp fwrite buffer,size,count,fp 3.說明 1 buffer 是乙個指標,對fread來說,它是讀入資料的存放位址。對fwrite來說,是要輸出資料的位址。2 size 要...

fread函式和fwrite函式

1.函式功能 用來讀寫乙個資料塊。2.一般呼叫形式 fread buffer,size,count,fp fwrite buffer,size,count,fp 3.說明 1 buffer 是乙個指標,對fread來說,它是讀入資料的存放位址。對fwrite來說,是要輸出資料的位址。2 size 要...

數學計算二次函式

求解 b b b 4ac 2a 的 import math int x 可以把x 字元型 轉化為int型 輸入時要用逗號比如 1,2,3且只能輸入3個數字 a,b,c int x for x in raw input split 輸入3個字元數字轉化為可以計算的數字 a,b,c input 請輸入a...