fread 功 能: 從一個流中讀資料 函式原型: size_t fread(void *buffer,size_t size,size_t count,FILE *stream); 參 數: 1.用於接收資料的地址(指標)(buffer) 2.單個元素的大小(size) :單位是位元組而不是位,例如讀取一個int型資料就是4個位元組 3.元素個數(count) 4.提供資料的檔案指標(stream) 返回值:讀取的元素的個數 因為你讀的是二進位制檔案,你fopen的時候要以fopen(“file”,‘rb’);去讀;fread函式中間的size很關鍵,如果你一次讀size個位元組(你那裡是8個位元組),而你的內容沒有size那麼大,就會讀失敗。所以建議讀的時候1個位元組1個位元組的讀,讀n次。 fread(a,1,n,fp);返回的是讀的元素的次數,即它的個數。 而你的二進位制檔案是按位算的;int型的陣列a來儲存“1”,說明你的“1”要佔4個位元組,“1”的二進位制是 0000 0000 0000 0001,所以你讀的時候fread(a,1,4,fp);只能讀4個位元組,也就是分4次讀。讀8個位元組的結果就不是"1"了。
fread 功 能: 從一個流中讀資料 函式原型: size_t fread(void *buffer,size_t size,size_t count,FILE *stream); 參 數: 1.用於接收資料的地址(指標)(buffer) 2.單個元素的大小(size) :單位是位元組而不是位,例如讀取一個int型資料就是4個位元組 3.元素個數(count) 4.提供資料的檔案指標(stream) 返回值:讀取的元素的個數 因為你讀的是二進位制檔案,你fopen的時候要以fopen(“file”,‘rb’);去讀;fread函式中間的size很關鍵,如果你一次讀size個位元組(你那裡是8個位元組),而你的內容沒有size那麼大,就會讀失敗。所以建議讀的時候1個位元組1個位元組的讀,讀n次。 fread(a,1,n,fp);返回的是讀的元素的次數,即它的個數。 而你的二進位制檔案是按位算的;int型的陣列a來儲存“1”,說明你的“1”要佔4個位元組,“1”的二進位制是 0000 0000 0000 0001,所以你讀的時候fread(a,1,4,fp);只能讀4個位元組,也就是分4次讀。讀8個位元組的結果就不是"1"了。