下面就详细讲解一下“详解C语言中的fopen()函数和fdopen()函数”。
fopen()函数
fopen()函数的基本介绍
fopen()
是C语言中用于打开文件的库函数,通过它可以打开一个文件并返回一个文件指针。其函数原型为:
FILE *fopen(const char *filename, const char *mode);
其中,filename
为所要打开的文件名(可以包含文件路径),mode
为打开文件的模式。
fopen()
函数返回一个指向FILE
结构体的指针。在成功打开文件时,它会返回一个指向这个结构体的指针(即文件指针),否则返回NULL
。
fopen()函数的模式
fopen()
函数的mode
参数用于指定打开文件的模式。以下是mode
参数的常见取值:
模式 | 含义 |
---|---|
"r" | 以只读方式打开文件。 |
"w" | 以写入方式打开文件,如果文件不存在则创建该文件,如果文件已存在则清空该文件的内容。 |
"a" | 以写入方式打开文件,如果文件不存在则创建该文件,如果文件已存在则在文件末尾追加内容。 |
"r+" | 以读写方式打开文件,文件必须存在。 |
"w+" | 以读写方式打开文件,如果文件不存在则创建该文件,如果文件已存在则清空该文件的内容。 |
"a+" | 以读写方式打开文件,如果文件不存在则创建该文件,如果文件已存在则在文件末尾追加内容。 |
fopen()函数的示例
下面是一个简单的使用fopen()
函数的示例,它将打开一个名为example.txt
的文件并写入一些数据:
#include <stdio.h>
int main() {
FILE *fp;
char str[] = "Hello, world!\n";
fp = fopen("example.txt", "w");
if (fp == NULL) {
printf("Cannot open file.\n");
return 1;
}
fprintf(fp, "%s", str);
fclose(fp);
return 0;
}
这段代码中,我们调用了fopen()
函数,并把它的返回值赋值给一个FILE
类型的指针变量fp
。之后,我们又调用了fprintf()
函数将要写入的数据写入到已经打开的文件中,最后通过fclose()
函数关闭文件。
fdopen()函数
fdopen()函数的基本介绍
fdopen()
也是C语言中用于打开文件的库函数,不过与fopen()
函数不同的是,fdopen()
函数的参数是一个文件描述符,而不是文件名。其函数原型为:
FILE *fdopen(int fd, const char *mode);
其中,fd
为文件描述符,mode
为打开文件的模式。fdopen()
函数返回一个指向FILE
结构体的指针。
fdopen()函数的示例
下面是一个简单的使用fdopen()
函数的示例,它将打开一个标准输出设备stdout
并将其作为一个文件流来使用:
#include <stdio.h>
#include <fcntl.h>
int main() {
int fd;
FILE *strm;
/* 打开标准输出设备 */
fd = open("/dev/stdout", O_WRONLY);
if (fd == -1) {
printf("Cannot open file.\n");
return 1;
}
/* 将文件描述符作为流使用 */
strm = fdopen(fd, "w");
fprintf(strm, "Hello, world!\n");
fclose(strm);
return 0;
}
这段代码中,我们先调用open()
函数打开一个标准输出设备stdout
,并将其返回的文件描述符保存到了变量fd
中。接着,我们调用fdopen()
函数把fd
转成一个文件流,并将其赋值给变量strm
。最后,我们通过fprintf()
函数将要写入的数据写入到strm
中,并通过fclose()
函数关闭文件流。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解C语言中的fopen()函数和fdopen()函数 - Python技术站