在同一个文件上执行I/O操作时,系统I/O与标准I/O可以混合使用,借助于库函数 fdopen、fileno可以将文件描述符和FILE指针对象之间进行转换。
1.3.3.1 fileno
用于将传入的FILE指针转换成整数文件描述符。
1)头文件
#include <stdio.h>
2)函数原型
int fileno(FILE *stream);
3)参数
stream:表示需要转换的文件指针。
4)返回值
如果成功,返回得到文件描述符,如果转换错误将返回-1,并且会设置errno来指示错误原因。
1.3.3.2 fdopen
用于将传入的整数文件描述符转换成FILE指针。
1)头文件
#include <stdio.h>
2)函数原型
FILE *fdopen(int fd, const char *mode);
3)参数
fd:要操作的文件描述符。
mode:表示打开文件用的操作(1-6必选其一,7和8可以省略)
⚫"r":以只读方式打开文件,文件必须存在。
⚫"w":以写入方式打开文件,如果文件不存在则创建文件;如果文件存在,则清除原文件内容并创建文件。
⚫"a":以追加方式打开文件,如果文件不存在则创建文件;如果文件存在,则追加内容到文件的末尾。
⚫"r+":相当于在“r”权限的基础上添加写入权限,以读写方式打开文件,文件必须存在。
⚫"w+":相当于在“w”权限基础上添加“r+”权限,可以对文件做读取和写入,如果文件不存在则创建文件;如果文件存在,则清空原文件内容并创建文件。
⚫"a+":相当于在“a”权限基础上添加“r+”权限,可以对文件做读取和写入,如果文件不存在则创建文件,如果文件存在,则追加内容到文件的末尾。
⚫"b":二进制文件。
⚫"t":文本文件。
4)返回值
如果成功,返回得到文件指针,如果转换错误将返回-1,并且会设置errno来指示错误原因。
442