連續使用兩次fread 錯誤和fread返回值

2021-09-07 23:15:05 字數 1313 閱讀 2383

今天在寫乙個**,要把一幀的buffer讀入到檔案,因為有neon和opencl兩種不同的實現所以需要讀取檔案兩次,**如下:

1   file *file;

2int i = 0

;3 inter_block_size_gpu_rs *block_size;

4 file = fopen(name, "rb"

);5if (file ==null) 9//

logi("file open ok:%s",name);

10#if use_ocl

11 logi("

read pool buffer");

12int readcount=0;13

for(i=0;i<50;++i)

1920

#if use_neon

21for(i=0;i<50;++i)

29 logi("");

30#endif

發現前面讀取檔案成功,後面連續50次讀取檔案失敗。久久不知道為什麼?

後來發現c語言的檔案讀取的指標file * file,通過編譯這個指標讀取檔案的內容,當讀完乙個文字的時候,file 指很已經到啦檔案的尾部,而c語言輸出輸入指標確實是共用的。

所以當你第二次使用的fread的時候一直返回0,只需要在第二次執行fread之前加上**:

即可。問題解決。

另外解釋一下size_tfread (void*buffer,size_tsize,size_tcount,file*stream) ;

中 返回指是實際讀取的count 數,這個數是指 多少個size 。比如:

乙個檔案有四個 char 的字元:1,2,3,4

count = fread(rs_obj.buffer_pool_map_ptr, 1,sizeof(int),  file);   會返回4,

count =fread(rs_obj.buffer_pool_map_ptr,sizeof(int),1,  file);   會返回1

所以說實際讀取的是size 的倍數。

連續兩次倒在hr槍下

以前從沒想過這個問題,以前只對自己的技能有過懷疑,認為自己有很多東西不懂,不會。沒想到,連續兩次求職經歷都沒有在技術上摔跟頭,卻每次都掛在了hr上。技術不會,你可以去學 做人不合格,你這一輩子就玩了。第一次面試西門子,自己的不自信讓我失去了寶貴的機會,不過也沒什麼,本來筆試的時候就是因為心態好,所以...

Putty設定自動連續兩次登入

有時候你想登入到伺服器a,但是伺服器a有白名單,你只能從堡壘機b登入上去,所以每次你想登入到伺服器a,得先登入到堡壘機b,然後在登入到伺服器a。我們可以用putty的local proxy來設定每次登入到伺服器a的時候,自動先登入到堡壘機b,然後以堡壘機b作為 在登入到伺服器a,所以從使用者的角度看...

Qt 把連續兩次單擊當成雙擊

方法1 主要通過計時器,在一段時間內的連續兩次單擊,觸發雙擊事件 voidinit void mousereleaseevent qmouseevent m nclickcount 1 300ms 內,兩次單擊則觸發雙擊效果 然後停止計數 if m nclickcount 2 void onkeyo...