[問題]關於fwrite之函式使用疑問

看板C_and_CPP作者 (知道還問)時間8年前 (2017/12/13 12:25), 8年前編輯推噓3(3011)
留言14則, 6人參與, 8年前最新討論串1/1
開發平台(Platform): (Ex: Win10, Linux, ...) Windows Ubuntu 皆有使用 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) Windows 使用 Visual Studio C++ Ubuntu 使用 eclipse 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 關於fwrite函式,小弟也到MSDN找了此函式的定義如下: size_t fwrite(const void *buffer, size_t size, size_t count, FILE *stream) 其中 size定義為每個項目的Byte大小,而count則是多少個寫入項目。 欲將一組名稱為output,個數為100長度的float向量存為一.dat之二進位檔, 依照定義應該為: fwrite(output, sizeof(float), 100, 開啟檔案之指標) 但由學長先前的範例發現,如果將2,3的參數位置對調,仍然能夠順利將資料存起來,如 下: fwrite(output, 100, sizeof(float), 開啟檔案之指標) 並且儲存後的檔案利用Matlab驗證是正確的 想請教各位前輩,是不是小弟搞錯什麼,還是有什麼觀念不清楚的地方,想請各位指正。 手機排版,可能不易閱讀,還請見諒 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.117.160.91 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1513139146.A.494.html

12/13 12:44, 8年前 , 1F
因為它是把buffer的size*count寫進檔案裡吧?
12/13 12:44, 1F

12/13 12:49, 8年前 , 2F
james大是指寫入檔案會有不一樣的寫法嗎?
12/13 12:49, 2F

12/13 13:13, 8年前 , 3F
你count不要用4的倍數看看啊
12/13 13:13, 3F

12/13 13:32, 8年前 , 4F
檢查 fwrite 的回傳值看看.
12/13 13:32, 4F
※ 編輯: CannyRowFour (42.77.12.255), 12/13/2017 14:04:01

12/13 14:08, 8年前 , 5F
謝謝L大與y大建議,等等回去試試看
12/13 14:08, 5F

12/13 14:59, 8年前 , 6F
可以正確寫是因為implementation 通常會用size*count
12/13 14:59, 6F

12/13 14:59, 8年前 , 7F
但是回傳值不同
12/13 14:59, 7F

12/13 15:00, 8年前 , 8F
試了一下 你直接google "fwrite size count" 第一個搜
12/13 15:00, 8F

12/13 15:00, 8年前 , 9F
尋結果就有講了 還有放FreeBSD 的implementation. 以後
12/13 15:00, 9F

12/13 15:00, 8年前 , 10F
先查一下可能更快拿到答案喔
12/13 15:00, 10F

12/13 15:14, 8年前 , 11F
謝謝steve大的幫忙,非常感謝你的解說
12/13 15:14, 11F

12/13 16:15, 8年前 , 12F
那是寫在硬碟上沒什麼差別,如果某個裝置一次只能寫8個
12/13 16:15, 12F

12/13 16:15, 8年前 , 13F
那不就爆炸了
12/13 16:15, 13F

12/13 17:42, 8年前 , 14F
原來也有這樣的概念,謝謝stupid大的解說
12/13 17:42, 14F
文章代碼(AID): #1QCAlAIK (C_and_CPP)