文件类型
- 常规文件 - ASCII码文件 二进制文件
- 目录 d
- 字符设备 c
- 块设备 b
- 有名管道 p
- 套接口 s
- 符号链接 l
文件IO ---(linux系统提供)
当我们的应用程序要使用一些底层的功能时候,不应该自行访问底层,而应该向操作系统发出请求
文件IO特点
- 不带缓冲区
- 操作系统直接提供的函数接口
- 调用系统调用是很消耗资源的
标准IO-----(C库提供)
在系统调用接口之上封装的接口,一个C库函数可以封装多个系统调用函数
标准IO特点
- 增强了代码的可移植性,复用性
- 提高了效率
- 标准IO增加了一个缓冲机制
标准IO函数
#1
FILE *fopen(const char *path ,const char *mode)
path:文件路径
mode: r :只读 ,文件需要存在
r+:可读可写,文件必须存在
w:只写,文件不存在则创建,文件存在则清空
w+:可读可写,文件不存在则创建,文件存在则清空
a:只写,以追加的方式打开,文件不存在
则创建,文件存在则在文件末尾追加
a+:可读可写,文件不存在则创建,文件存在则在文件末尾追加
返回值:FILE *fp 流指针 失败返回:NULL
示例:FILE *fp = fopen("./1.txt","r+")
#2
stdin :标准输入流
stdout:标准输出流
stderr:标准错误流
fclose(FILE *fp) 关闭文件(流指针)
#3
FILE *freopen(const char *path,const char *mode,FILE *stream)
功能:改变流指针的指向
path:文件路径
mode:打开方式
stream:流指针
#4
int fgetc(FILE *stream)
功能: 获取一个字节的数据
int fputc(int c,FILE *stream)
功能:写入一个字节的数据
char *fgets(char *s,int size,FILE *stream)
功能:读取一行的数据 size为读取的字节数
将流指针的数据读取到内存中,即数组s[]中,同时返回值是读取到的数据的首地址。
char *fputs(const char *s,FILE *stream)
功能:写入一行的数据,将内存地址中数组s[]中的数据写入到流指针中
#5
int fseek(FILE *stream , long offset,int whence)
功能:定位文件的指针
stream:流指针
offset:偏移量
whence:基点
SEEK_SET:文件开头
SEEK_END:文件末尾
SEEK_CUR:文件当前位置
#6
long ftell(FILE *stream)
功能:返回值:当前文件指针位置
void rewind(FILE *stream)
功能:文件指针返回文件开头