精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>C/C++>>文件系统与注册表>>请问大侠fopen 与open 的不同,多谢!

主题:请问大侠fopen 与open 的不同,多谢!
发信人: riffle()
整理人: wenbobo(2002-12-06 22:42:40), 站内信件
【 在 bloodwolf (骨头) 的大作中提到: 】

fopen使用堆分配了一定数量的内存,当你用fprintf、putc等函数时,它
们先将要写的内容填入该内存区,填满了就FLUSH,真正地写入文件(当然,
这不是刷新磁盘缓冲),即调用INT 21,相当于执行write等函数。
而open呢,是直接调用INT 21,相应的读写函数write、read等也都是直
接调用INT 21。

在实际应用中,有这样两种情况:
  一、数据是大批大批地读写的,例如每次0.5K、1K、2K等。调用open会
直接一点,可以省去类似fprintf等函数的一些开销。

  二、数据是很零散的。例如整型数、长整型数、字符串、浮点数等说不
定要写些什么数据进去。如果一定要使用open + write。那么就得先
sprintf( buf, format, ... ),然后将buf write到文件中,这样频繁
地调用INT 21,将会浪费很多时间。这时使用fprintf( FILE, format,...)
反而更好了。

以上说的是在DOS下的情况,至于WINDOWS下及UNIX下是不是也有类似的区
别,我不太清楚(再说象WINDOWS这样,常常是希望用户“不拘小节”的)。

--
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.105.39.209]

[关闭][返回]