看板 C_and_CPP 關於我們 聯絡資訊
題目規定要開啟一個檔案,這個檔案的前4bytes是一個正整數 代表該檔案共有多少筆資料 小弟使用fread做這件事,結果一直報run time error 示意程式碼: FILE *fp = fopen("in.dat", "rb"); int num_data[1]; fread(num_data, sizeof(int), 1, fp); 程式會在fread()就執行失敗,跳出程式 請問是為什麼?要如何改善呢?謝謝 附上: https://codeshare.io/2WEeAb -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.193.209.131 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1589009560.A.074.html ※ 編輯: mistel (111.71.85.42 臺灣), 05/09/2020 15:54:47
withoutshine: 你有檢查過你的 fopen 回傳值嗎?05/09 16:27
cutekid: 應該是錯在第 16 行的 malloc,不是錯在第 14 行05/09 16:32
cutekid: 因為第 16 行掛掉,所以第 15 行的 printtf 沒有結果05/09 16:32
cutekid: 讓原po 誤以為死在第 14 行的 fread05/09 16:32
檢查過後確實是如此 請問malloc為什麼出錯了? 謝謝大大 ※ 編輯: mistel (111.71.85.42 臺灣), 05/09/2020 16:51:02
cutekid: 您可以先不要 malloc,先看第 15 行的 datanum[0] 的值05/09 16:55
cutekid: 看看是不是太大,還是負數之類的05/09 16:55
試過了 讀出來是200,值是正確的 檔案大小是404bytes 第一個整數是4bytes 後面的都是short int,所以是2bytes 所以有200個沒錯 ※ 編輯: mistel (111.71.85.42 臺灣), 05/09/2020 16:56:30 ※ 編輯: mistel (111.71.85.42 臺灣), 05/09/2020 16:57:41 我弄懂了...是我操作array有問題 我的buffer應該要宣告short int *buffer才對 感謝cutekid大大 ※ 編輯: mistel (111.71.85.42 臺灣), 05/09/2020 17:04:49
cutekid: 如果不是掛在 malloc ,可能掛在第 21 行 05/09 17:05