除了语法上的原因之外,还有其他你想要使用的原因吗
FILE *fdopen(int fd, const char *mode);
or
FILE *fopen(const char *path, const char *mode);
而不是
int open(const char *pathname, int flags, mode_t mode);
在Linux环境下使用C语言?
除了语法上的原因之外,还有其他你想要使用的原因吗
FILE *fdopen(int fd, const char *mode);
or
FILE *fopen(const char *path, const char *mode);
而不是
int open(const char *pathname, int flags, mode_t mode);
在Linux环境下使用C语言?
当前回答
对于我的应用程序,我从fopen()更改为open(),因为每次我运行fopen fgetc时,fopen都会导致双重读取。重复阅读破坏了我想要完成的事情。Open()似乎只做您要求它做的事情。
其他回答
对于我的应用程序,我从fopen()更改为open(),因为每次我运行fopen fgetc时,fopen都会导致双重读取。重复阅读破坏了我想要完成的事情。Open()似乎只做您要求它做的事情。
open()是一个系统调用,特定于基于unix的系统,它返回一个文件描述符。可以使用另一个系统调用write()写入文件描述符。 fopen()是一个ANSI C函数调用,返回一个文件指针,它可以移植到其他操作系统。我们可以使用fprintf写入文件指针。
在Unix中: 你可以使用以下方法从文件描述符中获取文件指针:
fP = fdopen(fD, "a");
你可以使用以下方法从文件指针获取文件描述符:
fD = fileno (fP);
如果你有一个FILE *,你可以使用fscanf, fprintf和fgets等函数。如果你只有文件描述符,你有有限的(但可能更快)输入和输出例程读,写等。
Open()是一个低级操作系统调用。fdopen()将操作系统级别的文件描述符转换为C语言的更高级别的file -抽象。fopen()在后台调用open(),并直接给你一个FILE-pointer。
使用file -object而不是原始文件描述符有几个优点,其中包括更易于使用,以及其他技术优点,如内置缓冲。特别是缓冲通常会带来相当大的性能优势。
Open()将在每个fopen()家族函数的末尾调用。Open()是一个系统调用,fopen()是库提供的包装函数,方便用户使用