fread總返回0的問題

2021-04-28 02:16:02 字數 660 閱讀 7569

size_t fread(void *ptr, size_t size, size_t nmemb, file *stream);

這個函式以前一直沒理解為什麼 size_t size, size_t nmemb引數來確定讀取緩衝區的大小,我開始以為兩個可以互換,而且在有些場合互換確實也沒問題,直到今天碰到了開啟乙個檔案,讀取的長度總是返回0。

事例**如下:

返回值總是0,我一直以為是開啟檔案失敗,其實不是

在函式fread中的每次讀取size_t大小的資料放到緩衝區,最多為nmemb個,所以返回值其實是讀取了多少個size_t大小的資料塊,這裡由於我的檔案小於100k,所以讀取總是沒有夠乙個1024*100大小的資料塊,返回肯定是0了,這裡其實是想返回讀取的位元組數,可以修改fread如下:

int lenbuffer=fread(buffer,1,1024*100,fp);

這裡就是每次讀取乙個位元組,最多讀取1024*100,最後返回值就是讀取的位元組數了

fread 返回值的問題

linux programmer s manual name fread,fwrite binary stream input output synopsis include size t fread void ptr,size t size,size t nmemb,file stream siz...

fread函式的返回值

先複製一段man fread 3 linux programmer s manual fread 3 name fread,fwrite binary stream input output synopsis include size t fread void ptr,size t size,siz...

spark sumbit返回狀態為0的問題

spark是乙個實時的分布式計算引擎,在大叔據領域屬於後起之秀,表現非凡,但是spark在使用的過程中也存在不少問題,這裡主要說一下spark sumbit的問題。spark sumbit是spark提交任務的乙個指令碼,這個指令碼提交的任務可能失敗也可能成功,但是spark sumbit這個指令碼...