1樓:匿名使用者
1、返回0通常是讀到了檔案尾。如果確認沒有到檔案尾,可以用ferror檢查錯誤。
if ( ferror ( fp ) )
2、c語言中:fread是一個函式。從一個檔案流中讀資料,最多讀取count個元素,每個元素size位元組,如果呼叫成功返回實際讀取到的元素個數,如果不成功或讀到檔案末尾返回 0。
函式原型:size_t fread ( void *buffer, size_t size, size_t count, file *stream) ;
引數:buffer 用於接收資料的記憶體地址
size 要讀的每個資料項的位元組數,單位是位元組
count 要讀資料項的個數,每個資料項size個位元組.
stream 輸入流的指標
返回值:
返回實際讀取的元素個數。如果返回值與count不相同,則可能檔案結尾或發生錯誤。從ferror和feof獲取錯誤資訊或檢測是否到達檔案結尾。
例項:#include
#include
int main(void)
fwrite(msg,1,strlen(msg)+1,stream);
fseek(stream,0,seek_set);
fread(buf,strlen(msg)+1,1,stream);
printf("%s\n",buf);
fclose(stream);
return0;}
2樓:匿名使用者
你沒有檢查fopen不成功的情況,即
fptr = fopen("codec.bin", "rb"); //載入資料
後加if(fptr ==null)
可能是開啟檔案錯誤造成的。
3樓:甕瑗
"codec.bin"的路徑關係對麼?預設走當前路徑,但是根據編譯環境,可能會有不同路徑效果。嘗試一下用絕對路徑。
fseek設定一下讀寫位置到檔案頭。
如果還不行,你就把開啟方式變成可讀寫的二進位制,然後一次讀一個位元組。
就不信丫不聽話
4樓:匿名使用者
不會是codec.bin檔案裡面就是空的吧。。。
c語言fread函式怎麼用啊?為什麼我寫出來輸出資料不對,
5樓:匿名使用者
c語言中:fread是一個函式。從一個檔案流中讀資料,最多讀取count個元素,每個元素size位元組,如果呼叫成功返回實際讀取到的元素個數,如果不成功或讀到檔案末尾返回 0。
函式原型:size_t fread ( void *buffer, size_t size, size_t count, file *stream) ;引數:buffer 用於接收資料的記憶體地址size 要讀的每個資料項的位元組數,單位是位元組count 要讀資料項的個數,每個資料項size個位元組.
stream 輸入流的指標返回值:返回實際讀取的元素個數。如果返回值與count不相同,則可能檔案結尾或發生錯誤。
從ferror和feof獲取錯誤資訊或檢測是否到達檔案結尾。
例程:#include
#include
int main(void)
fwrite(msg,1,strlen(msg)+1,stream);
fseek(stream,0,seek_set);
fread(buf,strlen(msg)+1,1,stream);
printf("%s\n",buf);
fclose(stream);
return0;}
c語言求助,fread,總是多輸出一行資料
6樓:廖增祥
c 語言
來讀檔案是初學者最容自易犯的一個錯bai誤,正確的方式是先讀,du再判斷zhi feof, 正確的讀檔案方式如dao下:
while (1)
printf(...);}
c語言fread函式讀取檔案問題
你寫入文字檔案後,資料是用ascii碼串的形式來表示,已經不是二進位制資料了,因此需要用fscanf函式來讀取,試試如下程式 include include struct hj main fclose fp fread是一個函式。從一個檔案流中讀資料,最多讀取count個元素,每個元素size位元組...
C語言如何返回字串,C語言中函式如何返回字串?
1 c語言中,字串不是一種基本型別,其本質是字元陣列,因此直接返回字串是不行的。因為c語言不允許例如 char 10 fun 這樣的函式定義方式。但是可以返回字元指標。返回一個動態分配的記憶體地址。2 例如 char c char getinput int length length 為要輸入字串的...
C語言返回陣列的問題
呼叫函式你還沒理解好。printf s v 這裡面v是什麼?是你定義的區域性變數,而這個變數在你呼叫函式的時候產生,而在呼叫結束的時候這個變數就消失了。所以什麼也輸不出來。這裡你可以把v定義成全域性變數,或者採用其他的函式值傳遞的方法 很多方法,還是找本書看下吧 補充 陣列可能要靠指標實現。v 10...