打开和fopen函数

13

1
请参见C fopen vs open - Matthew Flaschen
3个回答

14

其中一个是标准C库的一部分(fopen),因此您可以期望它存在于所有托管C编译器设置中。此函数返回一个FILE*,可以通过<stdio.h>中的函数进行操作。

另一个函数(open)是一个系统调用/函数,未在C标准中指定(但我相信它是POSIX标准的一部分),因此仅保证在声称支持它的某些平台上存在。这将返回表示文件的int,可以使用read/write和其他类似的函数进行操作。


1
请参阅http://www.cplusplus.com/reference/clibrary/cstdio/fopen/和http://rabbit.eng.miami.edu/info/functions/unixio.html以获取更多信息! - stanigator

4

open()是由遵循POSIX标准的操作系统提供的系统调用(大多数类似POSIX的操作系统也具有open()系统调用)。fopen()是由C实现和/或运行时库提供的C库函数。

fopen()允许进行缓冲和/或格式化的输入/输出,而open()通常用于更简单的IO操作。fopen()函数可以使用open()系统调用来实现。


1

正如其他人所说,open() 是一个通过 POSIX 标准进行的系统调用,主要由 UNIX 家族的操作系统支持。它返回一个表示已打开文件描述符的 'int'。

另一方面,fopen() 是由 C 库提供的,它返回一个指向已打开文件的 FILE*。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接