fread實際讀取位元組數少於指定位元組數的問題

2021-09-16 13:27:19 字數 511 閱讀 9710

segy**資料讀取過程中採用如下語句讀取**道:

file *fp = fopen(segyfilename, "r");

fseek(fp, 3600,seek_set);

int ns = 999;

size_t segysize = 240 + sizeof(float)* ns;

size_t act_size_of_read = fread((char*)&segy, 1, segysize, fp);

assert( act_size_of_read == segysize);

......

程式執行失敗!

發現  ns = 999 , segysize=4236 , act_size_of_read = 1683 < segysize

反覆檢查原始**資料道,沒有異常。

再次檢查**,發現檔案開啟方式有問題,更改"r"為"rb"後,執行成功!

細節決定成敗。不用盲目相信自己的**!

ByteBuf 讀取位元組陣列資料

bytebuf bytebuf pooledbytebufallocator.default.directbuffer 宣告乙個bytebuf 物件 bytebuf.writebyte 1 第一位置存放數字1 占用1個位元組 bytebuf.writeshort 0 第二位置存放數字 0 占用2個位...

按位元組數擷取字串

1.字串設定長度,長度限制 nsstring stringwithhtml nsstring str length cgfloat length 如果有寬度限制的話,建議用 if str.length length 缺點是字母或數字或中文與數字字母混合時計算有誤,還會執行下面方法,但比較保險 獲取字...

根據位元組數擷取字串

擷取字串相信大家基本都用過,但是一般都是用string.length判斷字串的長度後進行擷取。這樣如果一組字串裡既有英文 數字又有中文,那麼擷取出來的字串還是會長短不一,因為每個英文或數字是佔乙個位元組而每個漢字佔兩個位元組。這時,我們可以通過位元組數來擷取,寫了個方法 擷取指定長度的字串 擷取前的...