首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于fwrite跟fprintf函数的区别,该如何处理

2012-02-25 
关于fwrite跟fprintf函数的区别书上说,用fprintf和fscanf函数对磁盘文件进行读写,在输入时要将ASCII码转换

关于fwrite跟fprintf函数的区别
书上说,用fprintf和fscanf函数对磁盘文件进行读写,在输入时要将ASCII码转换为二进制形式,在输出时又要将二进制形式转换成字符,花费时间多,在内存与磁盘频繁交换数据的情况下,最好不用fprintf和fscanf函数,而用fread和fwrite函数。

比如fwrite跟fprintf,都是将数据写入磁盘;
fprintf也是将数据存储到磁盘,在输入时要将ascii转换成二进制。
fwrite是将内存中的数据写到磁盘,内存中是数据不是二进制的吗?不是输入到内存就为二进制了么?
这样下来还不都是一样的,哪里有快慢之分啊?

不理解了。。。大侠求教!

[解决办法]
这个理解有点乱
无论什么时候,在内存中的东西,只能是二进制的啊
这不是我们要在意的,我们要在意的是fwrite传什么参数,fprintf又传什么参数
fwrite传的是buffer,是一个地址,直接COPY内存这一段的数据
而fprintf只是传一段字符,因为需要格式后,然后再转换为二进制
fprintf多了一层转换
但最终都是二进制

还有一种做法,又可以轻松转换,又可以提升性能,就是,你先用sprintf得到字符,再fwrite
[解决办法]
把所有字符内容得到后,再一次性fwrite,减少磁盘读写

热点排行