作者zelkova (*〞︶〝*)
看板C_and_CPP
標題Re: [問題] function fwrite()的疑問
時間Wed Apr 27 22:46:38 2016
最近剛好有同事在跟我討論這個
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://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1461768416.A.FA2.html
1F:→ Schottky: 嗯,你是對的 04/27 22:54
2F:→ Schottky: fread, fwrite 是以前流行以 record 為單位讀寫時用的 04/27 22:55
3F:→ zelkova: 請問S大 record是指 1個element 還是 1個1個char 去寫呢? 04/27 22:58
4F:→ zelkova: 我們在討論哪個比較有效率.. 我認為是後者 他認為前者 04/27 22:59
5F:→ zelkova: 只是 stackoverflow 說兩者等價 沒什麼差別.. 04/27 23:00
6F:→ Schottky: 沒差別啊,到底層又不是一個 byte 一個 byte 去寫 04/27 23:11
7F:→ Schottky: record 就是這邊講的 element 04/27 23:11
8F:→ Schottky: fread/fwrite 有自己做 buffer 所以不用擔心他的效率 04/27 23:15
9F:→ zelkova: 了解 謝謝S大大 04/27 23:20