Re: [问题] function fwrite()的疑问

楼主: zelkova (*〞︶〝*)   2016-04-27 22:46:38
最近刚好有同事在跟我讨论这个
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 的回传值也是这样 只是它是读入成功之数目
: 而这个值有些时候还真的很有用....
作者: Schottky (顺风相送)   2016-04-27 22:54:00
嗯,你是对的fread, fwrite 是以前流行以 record 为单位读写时用的
楼主: zelkova (*〞︶〝*)   2016-04-27 22:58:00
请问S大 record是指 1个element 还是 1个1个char 去写呢?我们在讨论哪个比较有效率.. 我认为是后者 他认为前者只是 stackoverflow 说两者等价 没什么差别..
作者: Schottky (顺风相送)   2016-04-27 23:11:00
没差别啊,到底层又不是一个 byte 一个 byte 去写record 就是这边讲的 elementfread/fwrite 有自己做 buffer 所以不用担心他的效率
楼主: zelkova (*〞︶〝*)   2016-04-27 23:20:00
了解 谢谢S大大

Links booklink

Contact Us: admin [ a t ] ucptt.com