标准库IO接口
标准库IO接口:
fopen
fclose
fwrite
fread
fseek
文件流函数:(类型:FILE*
)
stdin
:标准输入stdout
:标准输出stderr
:标准错误输出
fopen
r
:只读r+
:可读可写,每次都在文件首部开始,覆盖式读写。w
:只写,文件不存在则创建,存在则清空内容。
(truncate
:截断,file to zero length
截断点为0
,清空内容再进行写入)w+
:读写,文件不存在则创建,存在则清空内容,覆盖式读写。a
:只写追加,文件不存在则创建,每次写入数据都是写入文件末尾。
因为是只写追加,故不能读取数据,不能使用fseek
回到SEEK_SET
,必须改变方式为a+即可。a+
:可读写追加,文件不存在则创建,读数据的初始位置是在文件起始,写数据一直追加在文件末尾。
其他接口:
fgets
:获取一行数据
printf
:格式化数据,直接打印,即写入标准输出stdout
。
fprintf
:格式化数据,写入指定的文件流指针,给定stdout
就与printf
等效了。
sprintf
:格式化数据,放入一个容器buf
。是一个用于字符串链接的函数。
snprintf
:多了一个size
,格式化时只向buf
中写入固定个数的单位,防止溢出。
sscanf
:把数据字符串按照格式拆解。
perror
:是面向库函数的,库函数中会封装许多系统调用接口,所以一旦出错,不容易确定到底是哪个接口出的问题。
标准库IO
接口操作句柄是:文件流指针FILE*
,文件流指针这个结构体中就包含了文件描述符,当使用标准库接口进行IO
,最终本质是通过文件流指针找到文件描述符,进而对文件进行操作。
fseek
函数原型:fseek(...,...,whence);
其中第3
个参数whence
(偏移量)的选项取值:
SEEK_SET
: 文件起始位置SEEK_CUR
: 当前位置SEEK_END
: 文件末尾位置
系统IO接口
系统调用接口:【open
、write
、read
、lseek
、close
】
open
- 所属头文件
< fcntl.h >
- 函数定义:
int open(const char *pathname,int flags,mode_t mode);
-
pathname
:文件路径名 -
flags
:选项标志 (中间通过 或 “|
” 间隔)- 必选项(必选其一) 含义 fcntl.h
中宏定义O_RDONLY
只读 0 O_WRONLY
只写 1 O_RDWR
可读可写 2 - 可选项 含义 O_CREAT
文件不存在则创建,存在则打开 O_EXCL
与O_CREAT同用时,若文件存在则报错 O_TRUNC
打开文件同时截断文件长度为0处,打开时清空文件内容 O_APPEND
追加写入 -
mode
:创建文件时给定权限。(八进制数字)
- 所属头文件:
<sys/stat.h>
</