可能是重复问题:
C fopen与open的区别
C语言中,open() 和fopen()有什么区别?
可能是重复问题:
C fopen与open的区别
C语言中,open() 和fopen()有什么区别?
其中一个是标准C库的一部分(fopen
),因此您可以期望它存在于所有托管C编译器设置中。此函数返回一个FILE*
,可以通过<stdio.h>
中的函数进行操作。
另一个函数(open
)是一个系统调用/函数,未在C标准中指定(但我相信它是POSIX标准的一部分),因此仅保证在声称支持它的某些平台上存在。这将返回表示文件的int
,可以使用read
/write
和其他类似的函数进行操作。
open()
是由遵循POSIX标准的操作系统提供的系统调用(大多数类似POSIX的操作系统也具有open()
系统调用)。fopen()
是由C实现和/或运行时库提供的C库函数。
fopen()
允许进行缓冲和/或格式化的输入/输出,而open()
通常用于更简单的IO操作。fopen()
函数可以使用open()
系统调用来实现。
正如其他人所说,open() 是一个通过 POSIX 标准进行的系统调用,主要由 UNIX 家族的操作系统支持。它返回一个表示已打开文件描述符的 'int'。
另一方面,fopen() 是由 C 库提供的,它返回一个指向已打开文件的 FILE*。