1.文件操作分为两种:
1.1、系统IO:系统调用接口,open(), read(), write(), close()。是操作系统直接提供的编程接口(API)。
1.2、标准IO:标准库的I/O函数,fopen(), fread(), fwrite(), fclose(),是对系统调用接口进一步封装。
1.3、系统IO和标准IO有什么区别?
系统IO : 低级IO,没有缓冲机制。操作的对象是文件描述符
标准IO : 高级IO,有缓冲机制,标准C库中实现。操作的对象是文件流
1.4系统开机的时候他就存在的文件
stdin 标准输入
stdout 标准输出
stderr 标准出错
1.5
1、打开文件
(1) int open(const char *pathname, int flags);//文件存在时用这种方式打开
(2) int open(const char * pathname, int flags, mode_t mode);//不存在时用这种方式先创建再打开
2、写入文件
(3)ssize_t write(int fd, const void *buf, size_t count);
(4)close(fd)
3、读取文件
(5)ssize_t read(int fd, void *buf, size_t count);
(6)creat(const char *pathname, int flags);
4、文件内光标移动
off_t lseek(int fd, off_t offset, int whence);
2.C库函数:
fopen fread fwrite fclose fseek
使用方式:路径+文件名 模式 权限
2.1 fopen
功能:打开一个文件
头文件:stdio.h
原型:FILE *fopen(const char *path, const char *mode);
参数:
path:
要打开的文件的路径(绝对、相对)
mode:
r:
以只读的形式打开文件
读写指针在开头
r+:
以读写的形式打开文件
读写指针在开头
w:
以只写的形式打开该文件
且清除文件的全部内容
文件不存在就创建
文件读写指针在开头
w+
以可读可写的形式打开该文件
且清除文件的全部内容
文件不存在就创建
文件读写指针在开头
a
以只写的形式打开该文件
文件读写指针在末尾
文件不存就创建
a+
以读写的形式打开文件
文件不存就创建
读文件就在开头
写文件总是在末尾
返回值:
成功返回 文件指针 FILE * 类型的
失败返回 NULL
2.2 fclose
功能:关闭打开的文件
头文件:stdio.h
原型:int fclose(FILE *stream);
参数:FILE *stream
就是打开文件返回的文件句柄
返回值:
返回 0 成功
返回 -1 失败
2.3 write
功能:写入一个缓冲区给文件
头文件:stdio.h
原型:size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream);
参数:ptr:你需要写入的缓冲区(内容)
size:你一次写入多少个字节
nmemb:你要写入几次
stream:文件句柄
返回值:
返回你成功写入的次数
2.4 fread
功能:从文件中读取一片内容
头文件:stdio.h
原型:size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
参数:
ptr:传入一个空间
size:一次读取的内容的大小
nmemb:你要读几次
stream:文件句柄
返回值:
size_t :读取的次数
头文件:stdio.h
原型:int fseek(FILE * stream,long offset,int whence);
参数: stream :文件句柄
offset : 为根据参数 whence 来移动读写位置的位移数
whence:
SEEK_SET: 从距文件开头 offset 位移量为新的读写位置
SEEK_CUR: 以目前的读写位置往后增加 offset 个位移量
SEEK_END :将读写位置指向文件尾后再增加 offset 个位移量
返回值:
调用成功时则返回 0
若有错误则返回-1
注意:
1.必须使用 ftell()来取得目前读写的位置。
2.当 whence 值为 SEEK_CUR 或 SEEK_END 时,参数 offset 允许负值的出现
2.5 fputs
功能:往文件输入/写入字符串
头文件:stdio.h
原型:int fputs(char * str, FILE *stream);
参数: int c 就是你要写入的字符
FILE *stream :就是文件句柄
函数返回值:
如果写入成功 返回字符本身
写入失败 返回 EOF(-1)
2.6 fgets
功能:往文件输入/写入字符串
头文件:stdio.h
原型:int fputs(char * str, FILE *stream);
参数: int c 就是你要写入的字符
FILE *stream :就是文件句柄
返回值:
如果写入成功 返回字符本身
写入失败 返回 EOF(-1)