1.IO-标准IO
文件操作
打开文件
FILE * fopen(const char *pathname, const char *mode);
参数1:文件名 参数2:打开方式权限(r,r+,w,w+,a,a+)
关闭文件
int fclose(FILE *stream);
成功:返回 0
失败:返回 EOF,且设置错误码(errno)
输入文件
int fprintf(FILE *stream, const char *format, ...);
//把format字符串输出到指定的文件stream中
输出文件
int fscanf(FILE *stream, const char *format, ...);
//从指定的文件stream中读取内容与format字符串进行匹配,把匹配格式化的数据输入到程序程序中
单个字符读写
int fgetc(FILE *stream);
//从文件中读取一个字符,输入到程序中,失败返回EOF
int fputc(int c, FILE *stream);
//往文件中写入一个字符,从程序输出内容
多个字符读写
char * fgets(char *s, int size, FILE *stream);
//一次从文件中读取多个字符,最多读取size-1个字符,在读取多个字符时,在size - 1 大小 以内,读取到'\n'字符就结束;或这一次读取已经把文件最后一个字符读取完 还是小于 size - 1 也结束;不然就是读取size - 1个字符,读取完成后在读取的最后一个字符后加上'\0'
int fputs(const char *s, FILE *stream);
//往文件中写入多个字符,输出多个字符到文件中,一直写入直到要写入的字符为'\0'为止(不写 入'\0') //写入一个字符串到文件,写入的字符串直到'\0'为止
指定大小读写
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);//读
参数:存储的地址;每个数据大小;个数;读取的文件
size_t fwrite(void *ptr, size_t size, size_t nmemb, FILE *stream);//写
2.缓冲机制
当执行程序时,系统默认为程序打开终端文件,
标准输入文件:stdin(读取终端)----行缓存
标准输出文件:stdout(写入终端)-----行缓存
标准错误输出文件:stderr(写入终端)----无缓存
int fflush(FILE *stream);//刷新缓冲区
文件IO
1.打开文件
int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);
//参数:文件名;权限;创建文件权限
参数二:
必须包含三选一:
O_RDONLY:只读打开
O_WRONLY:只写打开
O_RDWR:读写打开
还可以包含0个或多个:
O_TRUNC:如果文件存在,则在打开文件时把文件清空
O_APPEND:以追加的方式打开,所有写操作都在文件的末尾执行
O_NOCTTY:如果是终端,就是操作终端文件
O_CREAT:如果文件不存在,则创建文件,文件存在就没有任何作用 只有打开选项中有 O_CREAT,才表示可能创建文件,则需要第三个参数,创 建文件的权限
O_EXCL:如果文件不存在,就创建文件,如果文件存在就报错(和O_CREAT)
一般都是从3开始: 因为默认会打开3个文件: 标准输入文件:0 标准输出文件:1 标准错误输出文件:2
2.读写文件
ssize_t read(int fd, void *buf, size_t count);
ssize_t write(int fd, const void *buf, size_t count);
参数:文件描述符;存取指针;字节大小
3.关闭文件
int close(int fd);
参数:文件描述符
4.文件读写位置偏移
off_t lseek(int fd, off_t offset, int whence);
/*参数2:大于0右移,小于0左移;等于0,偏移0个字节
参数3:SEEK_SET:从文件开始位置;
SEEK_CUR:文件当前操作位置
SEEK_END:文件结束位置*/