文件io、标准io

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:文件结束位置*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值