前幾日做一些瑣碎事,用到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...