你什么时候使用fopen而不是open?

new*_*erl 3 c file-io fopen

通过测试我没有发现任何差异.

决定这一点的关键是什么?

Fre*_*Foo 12

fopen是任何C环境都应提供的便携式界面.此外,它的结果是一个缓冲流(FILE*),可以与方便的stdio功能一起使用.

open是Unix/POSIX特定的接口.其结果是一个裸(无缓冲)文件描述符,必须与低级系统调用一起使用.它确实允许对I/O进行更精细的控制(参见POSIX标准中的标志列表),因此有时您可能想要open一个文件,然后可能需要fdopen它来获取stdio和缓冲.