說明:如果您有任何疑問或想咨詢其他業務請撥打電話 400 685 0732
全網監測海量數據按需發布監測預警
實時把握輿情動態精準追溯信息源頭
fread是一個函數,它從文件流中讀數據,最多讀取count個項,每個項size個字節,如果調用成功返回實際讀取到的項個數(小于或等于count),如果不成功或讀到文件末尾返回0。返回真實讀取的項數,若大于count則意味著產生了錯誤。另外,產生錯誤后,文件位置指示器是無法確定的。若其他stream或buffer為空指針,或在unicode模式中寫入的字節數為奇數,此函數設置errno為EINVAL以及返回0.
fread函數——c語言中fread函數怎么用
C語言中:fread是一個函數。從一個文件流中讀數據,最多讀取count個元素,每個元素size字節,如果調用成功返回實際讀取到的元素個數,如果不成功或讀到文件末尾返回0。函數原型:size_tfread(void*buffer,size_tsize,size_tcount,FILE*stream);參數:buffer用于接收數據的內存地址size要讀的每個數據項的字節數,單位是字節count要讀數據項的個數,每個數據項size個字節.stream輸入流的指針返回值:返回實際讀取的元素個數。如果返回值與count不相同,則可能文件結尾或發生錯誤。從ferror和feof獲取錯誤信息或檢測是否到達文件結尾。
C中fread()函數的返回值
這個問題很容易搞錯,并導致很多問題,需要強調的是fread函數返回的并不是字節數。
realRead=fread(buf,item,count,fp)(每次讀item大小的數據塊,分count次來讀。)
而是返回的是成功有效的讀取的item元素的個數,而成功讀入的字節數則是realRead*sizeof(item)
一般說來realRead是小于count的,很巧的情況就剛好為count.除非文件大小剛好為item大小的整數倍。
返回的是真實讀入item元素的個數,雖然讀了count次,但是真正讀到的有效個數為realRead個
真實讀入字節數就為realRead*sizeof(item)
RETURNVALUE
freadandfwritereturnthenumberofitemssuccessfullyreadorwritten(i.e.,notthenumberof
characters).Ifanerroroccurs,ortheend-of-fileisreached,thereturnvalueisashortitem
count(orzero).
freaddoesnotdistinguishbetweenend-of-fileanderror,andcallersmustusefeof(3)andferror(3)
todeterminewhichoccurred.
fread(從文件流讀取數據)
表頭文件#include<stdio.h>
定義函數size_tfread(void*ptr,size_tsize,size_tcount,FILE*stream);
函數說明fread()用來從文件流中讀取數據。參數stream為已打開的文件指針,參數ptr指向欲存放讀取進來的數據空間,讀取的字節數以參數size*count來決定。
Fread()會返回實際讀取到的count數目,如果此值比參數count來得小,則代表可能讀到了文件尾了或者有錯誤發生(前者幾率大),這時必須用feof()或ferror()來決定發生什么情況。
返回值返回實際讀取到的count數目。
fread返回的不是字節數,
當且僅當下面這么用的時候,返回值才是字節數(當然因為恰好一個數據塊大小為1個字節,相當于realRead*1)
charbuff[size];
FILE*fp;
…
realRead=fread(buff,1,size,fp);
…
如果是:fread(buff,size,1,fp)
返回1表示讀取了size字節,返回0表示讀取數量不夠size字節
直接在文件中讀寫結構體的程序是不可移植的,如果在一種平臺上編譯運行writebin.c程序,把生成的recfile文件拷到另一種平臺并在該平臺上編譯運行readbin.c程序,則不能保證正確讀出文件的內容,因為不同平臺的大小端可能不同(因而對整型數據的存儲方式不同),如果大家還想了解更多與之有關的信息,歡迎關注我們文軍營銷的官網。
推薦閱讀
說明:如果您有任何疑問或想咨詢其他業務請撥打電話 400 685 0732