fread解析,踩坑

2021-10-10 14:43:18 字數 2299 閱讀 3763

前幾日做一些瑣碎事,用到fread函式,這裡簡單說下踩得坑。

在實際使用時,這個理解錯了bug++。

realread  = fread(buf,item,count,fp)    (每次讀

item

大小的資料塊,分

count

次來讀。)

fread函式返回的並不是位元組數,而是返回的是成功有效的讀取的

item

元素的個數,而成功讀入的位元組數則是

realread * sizeof(item)

realread

是小於等於

count

的,當檔案大小剛好為

item

大小的整數倍是才會相等。

返回的是真實讀入

item

元素的個數,雖然讀了

count

次,但是真正讀到的有效個數為

realread個, 真實讀入位元組數就為

realread*sizeof(item) 

return value

fread  and  fwrite  return the number of items successfully read or written (i.e., not the number of

characters).  if an error occurs, or the end-of-file is reached, the return value is  a  short  item

count (or zero).

fread does not distinguish between end-of-file and error, and callers must use feof(3) and ferror(3)

to determine which occurred.

fread(從檔案流讀取資料)

表頭檔案#include

定義函式size_t fread(void * ptr,size_t size,size_t count,file * stream);

函式說明fread()用來從檔案流中讀取資料。引數stream為已開啟的檔案指標,引數ptr指向欲存放讀取進來的資料空間,讀取的位元組數以引數size*count來決定。

fread()會返回實際讀取到的count數目,如果此值比引數count來得小,則代表可能讀到了檔案尾了或者有錯誤發生(前者機率大),這時必須用feof()ferror()來決定發生什麼情況。

返回值返回實際讀取到的count數目。

fread

返回的不是位元組數,

當且僅當下面這麼用的時候,返回值才是位元組數(當然因為恰好乙個資料塊大小為

1個位元組,相當於

realread*1

char buff[size];

file *fp;

...realread = fread(buff, 1, size, fp);

...

如果是

: fread(buff, size, 1, fp)返回1

表示讀取了

size

位元組,返回

0表示讀取數量不夠

size

位元組

Unity Rect踩坑 屬性解析

劃重點 rect的屬性只與rect自身有關 1 rect.postion以左下角為原點 也只有這乙個引數是以這個座標係為參考 座標軸如圖 2 剩下的rect.max,rect.min,rect.center以pivot所在位置為參考係 center是幾何中心 幾何位置固定 pivot是軸心 0,1 ...

systemtap embedded C 踩坑筆記

官方文件 systemtap的embedded c中,不能 include 也不能用printf和print。那怎麼列印呢?用stap printf。用法與printf一樣。還可以訪問cript中的全域性變數。官方文件中的示例 global var global var2 100 function ...

Aggregation MongoDB踩坑記錄

對某些篩選條件進行分頁查詢,開始每一頁的有效data都不足pagesize,最後發現,aggregation 的pipeline是有先後順序的。錯誤 agg aggregation.newaggregation aggregation.skip curpage 1 pagesize aggregat...