博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第五张标准I/O库
阅读量:4520 次
发布时间:2019-06-08

本文共 1567 字,大约阅读时间需要 5 分钟。

1.对于标准I/O库,操作是围绕流进行的。所谓的流,就是一种信息的转换,包括输入流,输出流,错误。即stdin,stdout。error。

【流的定向】读写的字符是多字节的就是宽定向,单字节的就是字节定向。字节定向可以进行清除及修改:

【更改定向类型】

freopen                          :清除流定向

fwide(FILE *fp, int mode) : 修改流的定向

mode:<0 字节定向 mode:>0宽定向 mode:=0 不适图设置流的定向。

【缓冲】包括三种:全缓冲,行缓冲,不带缓冲。其中,标准出错不带缓冲,打开终端设备的流是行缓冲,其他全缓冲。

【更改缓冲类型】

void setbuf(FILE *restrict fp,char *restrict buf);

buf通常全缓冲,buf与终端设备相关联是行缓冲;buf是NULL代表不缓冲

int setvbuf (FILE *restrict fp, char *restrict buf, int mode,size_t size);

用mode精准设置缓冲类型。buff是NULL代表自动分配适合长度的缓冲区。

【打开流】

1)FILE *fopen(const char *restrict pathname,const char *restrict type);

文件路径、打开模式

FILE *freopen(const char * restrict pathname,const char *restrict type, FILE *restrict fp);

文件路径、打开模式、文件指针//指定模式重新指定到另一文件,模式用于指定新文件的访问方式。把第三个参数里面内容通过type形式写入到pathname中。

FILE *fdopen(int filedes,const char *type);//取一个现存的文件描述符,并使一个标准的I/O流与该描

述符相结合。

2)type

   r或rb:为读而打开  w或wb:文件截断至0长,或为写而创建。 a或ab:添加,或为写而创建

   r+或r+b或rb+:为读和写而打开  w+或w+b或wb+:文件截断为0长,或为读和写而打开

   a或a+b或ab+:为在文件尾读和写而打开或创建

【读和写流】类型包括:一次一个字符;一次一行;直接I/O,fread和fwrite。这两个函数长读写一个结构。

1)输入函数一次一个字符:getc,fgetc,getchar(void)

    输入函数一次一行:      gets(不推荐用),fgets(char *restrict buf,int n, FILE *restrict fp):换行符     和n-1为基准,

2)输出函数一次一个字符:putc(可实现为宏),fputc(一定是函数),putchar

    输出函数一次一行:       puts(null终止,去null加换行符),fputs(null终止,不包括null)    

3.一次读或写整个结构(数组结构体等),由于其结构的特殊性,只能在同一个系统下读或写

   size_t fread(void *restrict ptr, size_t size, size_t nobj, FIFE *restrict fp);

   由于分页或者其他原因,此函数的返回的结果count可能小于nobj,但是不一定是出错。要再调用ferror进行判断。

   size_t fwrite(const void *restrict ptr, size_t size, size_t nobj, FILE *restrict fp);

   如果返回结果小于nobj,说明出错。

 

转载于:https://www.cnblogs.com/yinsheng1/p/6184188.html

你可能感兴趣的文章
ipv6下jdbc的连接数据库方式
查看>>
201521123069 《Java程序设计》第1周学习总结
查看>>
一线咨询师的絮絮叨叨
查看>>
文字分散对齐
查看>>
【NOIP 2012 国王游戏】 贪心+高精度
查看>>
【UOJ 117】欧拉回路
查看>>
用Pytorch训练MNIST分类模型
查看>>
一些不错的动画效果---郭雪彬
查看>>
iOS - TableViewCell分割线 --By吴帮雷
查看>>
jquery 获取input的值
查看>>
UVA 10003 - Cutting Sticks ( 区间dp )
查看>>
BETA 版冲刺前准备
查看>>
vue-表单绑定
查看>>
字典树(Trie)的基本实现(C++)
查看>>
Linux SSH & SCP命令
查看>>
用SQL语句操作数据
查看>>
Android——计算器
查看>>
函数指针的调用方式
查看>>
jacob 给word加印的功能
查看>>
利用for循环来实现全选
查看>>