Re: [問題] function fwrite()的疑問

看板C_and_CPP (C/C++)作者 (*〞︶〝*)時間9年前 (2016/04/27 22:46), 編輯推噓0(009)
留言9則, 2人參與, 最新討論串3/3 (看更多)
最近剛好有同事在跟我討論這個 size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream ); 想請教一下 ※ 引述《LPH66 ((short)(-15074))》之銘言: : ※ 引述《WillyLin (我是我 我不是我)》之銘言: : : fwrite()是標準ANSI C的function 吧? : : http://www.cplusplus.com/reference/clibrary/cstdio/fwrite/ : : 我一般都是看這裡查一些function的用法... : : 如果我要使用fwrite把一個512 bytes的 array寫進檔案 : : 使用fwrite(array, 1, 512, file_id)或者 : : fwrite(array, 512, 1, file_id)雖然會獲得一樣的結果 : : 但哪種在效率或code size上會比較好呢? : 我認為沒差 : 它們的差別就說明裡所言只有一個 : fwrite 的回傳值是為以第三個參數為單位的寫入成功之數目 : 亦即 第一個是以 512 byte 為單位 所以全部成功回傳 1 fwrite(array, 1, 512, file_id) => size = 1, count = 512 => 不是應該1 byte為單位, 全部成功回傳512? : 第二個是以 1 byte 為單位 所以全部成功回傳 512 fwrite(array, 512, 1, file_id) => size = 512, count = 1 => 不是應該512 byte為單位, 全部成功回傳1? : 這似乎可以在一些需要掌握實際寫入數量的地方用的上 : 同理, fread 的回傳值也是這樣 只是它是讀入成功之數目 : 而這個值有些時候還真的很有用.... -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 218.161.45.91 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1461768416.A.FA2.html

04/27 22:54, , 1F
嗯,你是對的
04/27 22:54, 1F

04/27 22:55, , 2F
fread, fwrite 是以前流行以 record 為單位讀寫時用的
04/27 22:55, 2F

04/27 22:58, , 3F
請問S大 record是指 1個element 還是 1個1個char 去寫呢?
04/27 22:58, 3F

04/27 22:59, , 4F
我們在討論哪個比較有效率.. 我認為是後者 他認為前者
04/27 22:59, 4F

04/27 23:00, , 5F
只是 stackoverflow 說兩者等價 沒什麼差別..
04/27 23:00, 5F

04/27 23:11, , 6F
沒差別啊,到底層又不是一個 byte 一個 byte 去寫
04/27 23:11, 6F

04/27 23:11, , 7F
record 就是這邊講的 element
04/27 23:11, 7F

04/27 23:15, , 8F
fread/fwrite 有自己做 buffer 所以不用擔心他的效率
04/27 23:15, 8F

04/27 23:20, , 9F
了解 謝謝S大大
04/27 23:20, 9F
文章代碼(AID): #1N8D3W-Y (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1N8D3W-Y (C_and_CPP)