[問題] 以2進位打開檔案讀取4bytes整數

看板C_and_CPP (C/C++)作者 (Mistel)時間5年前 (2020/05/09 15:32), 5年前編輯推噓3(304)
留言7則, 2人參與, 5年前最新討論串1/1
題目規定要開啟一個檔案,這個檔案的前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

05/09 16:27, 5年前 , 1F
你有檢查過你的 fopen 回傳值嗎?
05/09 16:27, 1F

05/09 16:32, 5年前 , 2F
應該是錯在第 16 行的 malloc,不是錯在第 14 行
05/09 16:32, 2F

05/09 16:32, 5年前 , 3F
因為第 16 行掛掉,所以第 15 行的 printtf 沒有結果
05/09 16:32, 3F

05/09 16:32, 5年前 , 4F
讓原po 誤以為死在第 14 行的 fread
05/09 16:32, 4F
檢查過後確實是如此 請問malloc為什麼出錯了? 謝謝大大 ※ 編輯: mistel (111.71.85.42 臺灣), 05/09/2020 16:51:02

05/09 16:55, 5年前 , 5F
您可以先不要 malloc,先看第 15 行的 datanum[0] 的值
05/09 16:55, 5F

05/09 16:55, 5年前 , 6F
看看是不是太大,還是負數之類的
05/09 16:55, 6F
試過了 讀出來是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

05/09 17:05, 5年前 , 7F
如果不是掛在 malloc ,可能掛在第 21 行
05/09 17:05, 7F
文章代碼(AID): #1UjboO1q (C_and_CPP)
文章代碼(AID): #1UjboO1q (C_and_CPP)