第5章标准I/O库总结
1 fwide函数试图设置流的定向(流的定向决定了读写单字节还是多字节字符)
int fwide(FILE *fp,int mode)
宽定向返回正值,字节定向返回负值,为定向返回0
已定向流不会改变流的定向
2 setbuf函数中指定的缓冲区的长度为BUFSIZ,这个常量在stdio.h中定义
3 freopen和fdopen函数
FILE *freopen(char *pathname,const char *type,FILE *fp)
FILE *fdopen(int filedes,const char *type)
3 gets和fgets、puts和fputs函数
char *fgets(char *buf,int n,FILE *fp) char *gets(char *buf) int fputs(const char *str,FILE *fp) int puts(const char *str)
gets函数无法指定缓冲区长度,可能导致写到缓冲区之后的存储空间中
puts函数会添加一个换行符
4 二进制I/O
size_t fread(void *buf,size_t size,size_t n,FILE *fp) size_t fwrite(const void *ptr,size_t size,size_t n,FILE *fp)
5 定位流
流中的位置可以用long、off_t、fpos_t三种类型表示,对应有三种定位、设置流当前位置的函数
long:
long ftell(FILE *fp) int fseek(FILE *fp,long offset,int whence)
off_t:
off_t ftell(FIEL *fp) int fseeko(FILE *fp,off_t offset,int whence)
pos_t:
int fgetpos(FILE *fp,fpos_t *pos) int fsetpos(FILE *fp,const fpos_t *pos)
6 格式化I/O
格式化输出:printf、fprintf、sprintf、snprintf(相比于sprintf,可以指定缓冲区长度n,超出长度将溢出)
vprintf、vfprintf、vsprintf、vsnprintf
格式化输入:scanf、fscanf、sscanf
vscanf、vfscanf、vsscanf
第5章标准I/O库总结的更多相关文章
- UNIX环境高级编程 第5章 标准I/O库
本章是关于C语言标准I/O库的,之所以在UNIX类系统的编程中会介绍C语言标准库,主要是因为UNIX和C之间具有密不可分的关系.由于UNIX系统存在很多实现,而每个实现都有自己的标准I/O库,为了统一 ...
- 《UNIX环境高级编程》(APUE) 笔记第五章 - 标准I/O库
5 - 标准I/O库 Github 地址 1. 标准 I/O 库作用 缓冲区分配 以优化的块长度执行 I/O 等 使用户不必担心如何选择使用正确的块长度 标准 I/O 最终都要调用第三章中的 I/O ...
- UNIX系统高级编程——第五章-标准I/O库-总结
基础: 标准I/O库在ANSI C中定义,可移植在不同的系统 文件指针(FILE):标准I/O库操作的不是文件描述符,而是流.FILE文件指针包含的是维护流所需的信息 通过函数fileno获取流的文件 ...
- APUE之第5章——标准I/O库
一.知识回顾:文件I/O 文件 I/O 是不带缓冲的 I/O(unbuffered I/O),指每个 read 和 write 都调用内核中的一个系统调用. 对于内核而言,所有打开的文件都通过文件描述 ...
- 《APUE》-第五章标准IO库
大多数UNIX应用程序都使用I/O库,本章说明了该库所包含的所有函数,以及某些实现细节和效率方面的考虑.同时需要重点关注标准I/O使用了缓冲的技术,但同时也是因为它的出现,产生了很多细节上的问题. 流 ...
- C++ Primer 读书笔记: 第8章 标准IO库
第8章 标准IO库 8.1 面向对象的标准库 1. IO类型在三个独立的头文件中定义:iostream定义读写控制窗口的类型,fstream定义读写已命名文件的类型,而sstream所定义的类型则用于 ...
- 第五章:标准I/O库
本章用于解析C语言标准I/O库,之所以在UNIX类系统的编程中会介绍C语言标准库,主要是因为UNIX和C之间具有密不可分的关系. 标准I/O库相比于操作系统的I/O库,具有更高的效率和可移植性,前者是 ...
- 第3章 文件I/O(8)_贯穿案例:构建标准IO函数库
9. 贯穿案例:构建标准IO函数库 //mstdio.h #ifndef __MSTDIO_H__ #define __MSTDIO_H__ #include <unistd.h> #de ...
- UNIX环境高级编程笔记之标准I/O库
一.总结 文件I/O一章讲了不带缓冲的I/O,本章讲的是带缓冲的I/O.不带缓冲针对的是内核的系统调用,而带缓冲针对的是用户空间的标准库函数,是基于带缓冲的I/O实现的.不带缓冲的I/O通过文件描述符 ...
随机推荐
- Redis_php 学习
转载内容: PhpRedis是php的一个扩展,效率是相当高有链表排序功能,对创建内存级的模块业务关系很有用;以下是redis官方提供的命令使用技巧: Redis::__construct构造函数 1 ...
- linux定时运行命令脚本——crontab
cron和crontab定时任务: http://blog.csdn.net/ithomer/article/details/6817019 http://blog.sina.com.cn/s/blo ...
- java简单实现季节,性别分词处理
淘宝里面,每个宝贝都有一个标题,根据标题来分词,区分出季节和性别,分别写了两个方法,供大家参考. public int season(String str) { String dest = " ...
- CSS入门基础
认识CSS 传统HTML设计网页版面的缺点 CSS的特点 CSS的排版样式 13.1 认识CSS CSS的英文全名是Cascading Style Sheets,中文可翻译为串接式排版样式,并且CSS ...
- Linux Shell多进程并发以及并发数控制
1. 基础知识准备 1.1. linux后台进程 Unix是一个多任务系统,允许多用户同时运行多个程序.shell的元字符&提供了在后台运行不需要键盘输入的程序的方法.输入命令后,其后紧跟&a ...
- Yii2 富头像上传
前台html: <div class="xz_img2 text-center"> <div class="images_flow" id=& ...
- 成品入库过账bapi
入库过账 FUNCTION ZPP_BAPI_PRODUCT_STOCK_IN. *"---------------------------------------------------- ...
- Linq to SQL 简单增删改查
用Linq大大减少了对数据库的一般操作所需的编码量.运行下面事例之前,首先建一个叫做Alien的数据库表. CREATE TABLE [dbo].[Aliens]( [Id] [int] IDE ...
- CentOS 修改IP地址, DNS, 网关
一.CentOS 修改IP地址 修改对应网卡的IP地址的配置文件# vi /etc/sysconfig/network-scripts/ifcfg-eth0 修改以下内容DEVICE=eth0 #描述 ...
- Android开发_Gson解析
//转换器 GsonBuilder builder = new GsonBuilder(); // 不转换没有 @Expose 注解的字段 builder.excludeFieldsWithoutEx ...