linux io函数,Linux下普通IO文件操作函数---C语言

普通文件io总结

file结构体

typedef struct

{

int level; /*填充/清空一级缓存*/

unsigned flag; /*文件状态指针*/

char fd; /*文件描述符*/

unsigned char hold; /*ungetc char if no buffer*/

int bsize; /*缓存区大小*/

unsigned char *buffer; /*数据缓冲区*/

unsigned char *curp; /*当前活动指针*/

unsigned istemp; /*临时文件指示器*/

short token; /*用于有效性检查*/

}file;

打开文件fopen函数

文件指针名=fopen(文件名,使用文件方式)

eg:

file *fp; //文件指针

fp=("file a","r"); //以只读方式打开hzk16

打开方式有:

描述符意义

“rt”

只读打开一个文本文件,只允许读数据

“wt”

只写打开或建立一个文本文件,只允许写数据

“at”

追加打开一个文本文件,并在文件末尾写数据

“rb”

只读打开一个二进制文件,只允许读数据

“wb”

只写打开或建立一个二进制文件,只允许写数据

“ab”

追加打开一个二进制文件,并在文件末尾写数据

“rt+”

读写打开一个文本文件,允许读和写

“wt+”

读写打开或建立一个文本文件,允许读写

“at+”

读写打开一个文本文件,允许读,或在文件末追加数 据

“rb+”

读写打开一个二进制文件,允许读和写

“wb+”

读写打开或建立一个二进制文件,允许读和写

“ab+”

读写打开一个二进制文件,允许读,或在文件末追加数据

fopen若过出错则,返回一个null可以用作错误异常处理的判断条件;

fclose函数

用于关闭当前文件 fclose(file*);返回值为0表示正确,非零错误。

文件读写操作:

·字符读写函数 :fgetc和fputc·字符串读写函数:fgets和fputs·数据块读写函数:freed和fwrite·格式化读写函数:fscanf和fprinf

fgetc(filr*)与fputc(const char,file*)/fputc(char,file*):

fgetc每次在文件中读一个字节,每读一次文件内的字符指针往后挪一位,可多次重复使用依此读出文件内容。

fput函数每次写入一个字符,每写一次文件内指针向后挪动一位,可多次连续使用写入。

fgets(char* buf, int n, file*)与fputs(char* buf, file*):

从文件中读出 n-1 个字符放入buf中

fputs将字符串写入文件中

fread(cahr* buf, int size, int count,file* fp)与fwrite(char* buf, int size, int count,file* fp)

fread 从fp中读入conut个size长度的字符串到buf中

fwirte从buf中读出count个size个长度的字符串到fp中

fscanf(file*, 格式, 列表)和 fprintf(file*, 格式, 列表)

eg:

fprintf(fp,"%s %d %d %s",pp->name,pp->num,pp->age,pp->addr);

fscanf(fp,"%s %d %d %s",qq->name,&qq->num,&qq->age,qq->addr);

rewind(file*)

将文件内部指针移到文件首

fseek(file* fp,int count,int startpoint)

fp 文件指针

count 位移量,表示从startpoint开始计算位移量

startpoint有三种形式:

起始点表示符值

seek—set

0

当前

sseek-cur

1

sseek-end

2

设置bu模式函数

#include

void setbuf(file *stream, char *buf);

int setvbuf(file *stream, char *buf, int mode, size_t size);

void setbuffer(file *stream, char *buf, size_t size);

void setlinebuf(file *stream);

setbuf 与 setvbuf 指定缓冲区(在读写文件之前),将不再使用系统默认的缓冲区

setbuf(fp, null) 使得文件不带缓冲区

setbuf(ffp , null, _ionbf , 0 ) 在此情况下与setbuf(fp, null)相同

setbuf 中参数:

stream表示操作文件;

buf 缓冲区,;

mode 模式;

size 大小。

setbuffer函数

此函数与setbuf函数类似,好在可自定义buf的大小

setlinebuf函数

此函数等价于setvbuf(fp, (char *) null, _iolbf, 0);

小点:

stdin 0 标准输入

stdout 1 标准输出

stderr 2 标准错误

_ionbf 无缓冲

_iolbf 行缓冲

_iofbf 全缓冲

_io_line_buf 行缓冲

_io_unbuffered 无缓冲

对io普通文件操作整理,有错误请指出;

参考:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值