除了语法上的原因之外,还有其他你想要使用的原因吗
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和C语言中的open
1) fopen是一个库函数,open是一个系统调用。
2) fopen提供了缓冲IO,它比没有缓冲的open更快。
3) fopen是可移植的,而open是不可移植的(open是特定于环境的)。
4) fopen返回一个指向FILE结构的指针(FILE *);Open返回一个标识文件的整数。
5) FILE *让你能够使用fscanf和其他stdio函数。
其他回答
对于我的应用程序,我从fopen()更改为open(),因为每次我运行fopen fgetc时,fopen都会导致双重读取。重复阅读破坏了我想要完成的事情。Open()似乎只做您要求它做的事情。
fopen和C语言中的open
1) fopen是一个库函数,open是一个系统调用。
2) fopen提供了缓冲IO,它比没有缓冲的open更快。
3) fopen是可移植的,而open是不可移植的(open是特定于环境的)。
4) fopen返回一个指向FILE结构的指针(FILE *);Open返回一个标识文件的整数。
5) FILE *让你能够使用fscanf和其他stdio函数。
使用fopen打开文件 在我们能够从磁盘上的文件读取(或写入)信息之前,我们必须打开该文件。为了打开文件,我们调用了fopen函数。
1.firstly it searches on the disk the file to be opened.
2.then it loads the file from the disk into a place in memory called buffer.
3.it sets up a character pointer that points to the first character of the buffer.
这就是fopen函数的性质 在缓冲过程中有一些原因,可能会超时。因此,当比较fopen(高级i/o)和open(低级i/o)系统调用时,它比fopen更快更合适。
Open()将在每个fopen()家族函数的末尾调用。Open()是一个系统调用,fopen()是库提供的包装函数,方便用户使用
还取决于需要打开哪些标志。关于写和读(以及可移植性)的用法,应该使用f*,如上所述。
但是如果想要指定更多的标准标志(如rw和append标志),则必须使用特定于平台的API(如POSIX open)或抽象这些细节的库。c标准没有任何这样的标志。
例如,您可能希望仅在文件退出时才打开该文件。如果不指定create标志,则该文件必须存在。如果将exclusive添加到create,则只会在文件不存在时创建该文件。还有更多。
例如,在Linux系统上,有一个通过sysfs公开的LED接口。它通过一个文件暴露led的亮度。以0-255的字符串形式写入或读取数字。当然,您不希望创建该文件并只在它存在时才写入它。现在最酷的事情是:使用fdopen来使用标准调用读取/写入这个文件。