UNIX高级编程-标准I/O
来源:互联网 发布:java实现文件上传代码 编辑:程序博客网 时间:2024/05/16 10:54
第5章标准I/O库
5.1 流和FILE对象
流的定向决定了所读\写的字符是单字节还是多字节
mode>0:宽定向即在未定向的流上使用一个多字节I/O函数
mode<0:字节定向即在未定向的流上使用一个单字节I/O函数
Int fwide(FILE *fp,int mode);//设置流定向
FILE对象的指针包含了标准I/O库管理该流的所有信息:用于实际I/O操作的文件描述符、指向用于该流缓冲区的指针,缓冲区的长度,当前缓冲区的字符数,出错标志等等
5.2缓冲
全缓冲(_IOFBF):填满标准I/O缓冲区后才进行实际I/O操作
对于flush(冲洗),有两种情况,如果是标准I/O库,flush操作实质上是将缓冲区中的数据写入磁盘上,如果是终端驱动程序方面,flush则表示丢弃缓冲区中的数据。
行缓冲(_IOLBF):当输入或者输出遇到换行符时,才执行I/O操作。
不带缓冲(_IONBF):标准I/O库不对字符进行缓冲存储
Void setbuf(FILE *restrict fp,char*restrict buf); //设置打开或者关闭缓冲机制
Int setvbuf()FILE *restrict fp,char*restrict buf,int mode,size_t size);//精确的指定所需的缓冲类型
Int fflush(FILE *fp);
5.3 打开流
FILE *fopen(const char *restrictpathname,const char *restrict type);//打开指定的文件
FILE *freopen(const char *restrictpathname,const char *restrict type,FILE *restrict fp); //在指定流上打开文件
FILE *fdopen(int filedes,const char *type);//获取现有的文件描述符,使标准I/O流与描述符相关联
Type:决定了I/O流的读写方式
Int fclose(FILE *fp);//关闭打开的流
5..4读/写流
(1)每次读/写一个字符的I/O
(2),每次读/写一行的I/O
(3)直接I/O
输入函数:
Int getc(FILE *fp);//读一个字符,速度最快
Int fgetc(FILE *fp);
Int getchar(void);
判断是否出错或者到达文件尾端
Int ferro(FILE *fp);
Int feof(FILE *fp);
Void clearerr(FILE *fp);//清除标志
Int ungetc(int c,FILE *fp); //将字符压回流中,读出顺序与压回顺序正好相反
输出函数
Int putc(int c,FILE *fp);//写一个字符,速度最快
Int fputc(int c,FILE *fp);
Int putchar(int c);
每次读一行
Char *fgets(char *restrict buf,int n,FILE*restric fp);//每次读一行
每次写一行
Int fputs(const char *restrict str,FILE*restric fp); //将以null符终止的字符串写到指定的流中
5.5 二进制I/O
Size_t fread(void *restrict ptr,size_tsize,size_t nobj,FILE *restrict fp);
Size_t fwrite(const void *restrictptr,size_t size,size_t nobj,FILE *restrict fp);
ptr:读/写的对象缓冲区
size:每个对象的长度
nobj:读/写对象的个数
fp:文件流
5.6定位流
Int fgetpos(FILE *restrict fp,fpos_t*restrict pos); //pos并保存文件位置指示器的当前值
Int fsetpos(FILE *fp,const fpos_t *pos);//设置文件位置指示器的当前值为pos
5.7格式化I/O
格式化输出
Int printf(const char *restrict format);//格式化数据写到标准输出
Int fprintf(FILE *restrict fp,const char*restrict format,…);//格式化数据写到特定的流
Int sprint(char *restrict buf,const char*restrict format);//格式化数据写道buf数组中·
Int snprintf(char *restrict buf,size_tn,const char * restrict format);// 格式化数据写道buf数组中,并在尾端加null字节
格式化输入
Int scanf(const char *restrict format,…);//从标准输入读格式数据
Int fscanf(FILE *restrict fp,const char*restrict format);//从指定流中读格式化数据
Int sscanf(const char *restrict buf,constchar *restrict format,…);//从指定buf数组中读格式化数据
Int fileno(FILE *fp);//获得文件流的描述符
- UNIX环境高级编程----标准I/O
- UNIX环境高级编程--标准I/O
- UNIX高级编程-标准I/O
- UNIX环境高级编程---标准I/O库
- unix环境高级编程-5.2~3标准I/O库。
- unix环境高级编程-5.8-标准I/O的效率。
- UNIX环境高级编程---标准I/O库
- unix环境高级编程----标准I/O库
- UNIX环境高级编程——标准I/O库
- UNIX环境高级编程——标准I/O库
- UNIX环境高级编程--标准I/O库(二)
- unix 环境高级编程 chap5 - 标准I/O
- 《UNIX环境高级编程》五标准I/O库读书笔记
- UNIX环境高级编程<六>: 标准I-O库
- 《Unix环境高级编程》之 标准I/O库
- UNIX环境高级编程——标准I/O库函数和Unbuffered I/O函数
- UNIX高级编程-高级I/O
- UNIX高级编程-高级I/O
- Java参数传递和Clone()
- sqlserver 中NOLOCK、HOLDLOCK、UPDLOCK、TABLOCK、TABLOCKX
- java容器类详解--LinkedList
- UE4 BehaviorTree笔记
- tp问题现象及汇总
- UNIX高级编程-标准I/O
- 局域网下载 ios 10.x 国行的问题
- Python CSV模块简介
- 一些比较有用的Linux命令
- tomcat使用线程池配置高并发连接
- 简易的自定义照相机
- html布局
- 二进制负数的一些问题
- Spring mvc 405 Request method 'POST' not support