1 fwide函数试图设置流的定向(流的定向决定了读写单字节还是多字节字符)

  1. int fwide(FILE *fp,int mode)
  2.                   宽定向返回正值,字节定向返回负值,为定向返回0

                   已定向流不会改变流的定向

2 setbuf函数中指定的缓冲区的长度为BUFSIZ,这个常量在stdio.h中定义

3 freopen和fdopen函数

  1. FILE *freopen(char *pathname,const char *type,FILE *fp)
  1. FILE *fdopen(int filedes,const char *type)

3 gets和fgets、puts和fputs函数

  1. char *fgets(char *buf,int n,FILE *fp)
  2.  
  3. char *gets(char *buf)
  4.  
  5. int fputs(const char *str,FILE *fp)
  6.  
  7. int puts(const char *str)

gets函数无法指定缓冲区长度,可能导致写到缓冲区之后的存储空间中
puts函数会添加一个换行符

4 二进制I/O

  1. size_t fread(void *buf,size_t size,size_t n,FILE *fp)
  2.  
  3. size_t fwrite(const void *ptr,size_t size,size_t n,FILE *fp)

5 定位流
流中的位置可以用long、off_t、fpos_t三种类型表示,对应有三种定位、设置流当前位置的函数

long:

  1. long ftell(FILE *fp)
  2.  
  3. int fseek(FILE *fp,long offset,int whence)

off_t:

  1. off_t ftell(FIEL *fp)
  2.  
  3. int fseeko(FILE *fp,off_t offset,int whence)

pos_t:

  1. int fgetpos(FILE *fp,fpos_t *pos)
  2.  
  3. 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库总结的更多相关文章

  1. UNIX环境高级编程 第5章 标准I/O库

    本章是关于C语言标准I/O库的,之所以在UNIX类系统的编程中会介绍C语言标准库,主要是因为UNIX和C之间具有密不可分的关系.由于UNIX系统存在很多实现,而每个实现都有自己的标准I/O库,为了统一 ...

  2. 《UNIX环境高级编程》(APUE) 笔记第五章 - 标准I/O库

    5 - 标准I/O库 Github 地址 1. 标准 I/O 库作用 缓冲区分配 以优化的块长度执行 I/O 等 使用户不必担心如何选择使用正确的块长度 标准 I/O 最终都要调用第三章中的 I/O ...

  3. UNIX系统高级编程——第五章-标准I/O库-总结

    基础: 标准I/O库在ANSI C中定义,可移植在不同的系统 文件指针(FILE):标准I/O库操作的不是文件描述符,而是流.FILE文件指针包含的是维护流所需的信息 通过函数fileno获取流的文件 ...

  4. APUE之第5章——标准I/O库

    一.知识回顾:文件I/O 文件 I/O 是不带缓冲的 I/O(unbuffered I/O),指每个 read 和 write 都调用内核中的一个系统调用. 对于内核而言,所有打开的文件都通过文件描述 ...

  5. 《APUE》-第五章标准IO库

    大多数UNIX应用程序都使用I/O库,本章说明了该库所包含的所有函数,以及某些实现细节和效率方面的考虑.同时需要重点关注标准I/O使用了缓冲的技术,但同时也是因为它的出现,产生了很多细节上的问题. 流 ...

  6. C++ Primer 读书笔记: 第8章 标准IO库

    第8章 标准IO库 8.1 面向对象的标准库 1. IO类型在三个独立的头文件中定义:iostream定义读写控制窗口的类型,fstream定义读写已命名文件的类型,而sstream所定义的类型则用于 ...

  7. 第五章:标准I/O库

    本章用于解析C语言标准I/O库,之所以在UNIX类系统的编程中会介绍C语言标准库,主要是因为UNIX和C之间具有密不可分的关系. 标准I/O库相比于操作系统的I/O库,具有更高的效率和可移植性,前者是 ...

  8. 第3章 文件I/O(8)_贯穿案例:构建标准IO函数库

    9. 贯穿案例:构建标准IO函数库 //mstdio.h #ifndef __MSTDIO_H__ #define __MSTDIO_H__ #include <unistd.h> #de ...

  9. UNIX环境高级编程笔记之标准I/O库

    一.总结 文件I/O一章讲了不带缓冲的I/O,本章讲的是带缓冲的I/O.不带缓冲针对的是内核的系统调用,而带缓冲针对的是用户空间的标准库函数,是基于带缓冲的I/O实现的.不带缓冲的I/O通过文件描述符 ...

随机推荐

  1. ZOJ-2362 Beloved Sons 贪心 | KM

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2362 裸的匹配问题,直接KM,就算是O(n^4)的KM也不会超. ...

  2. 5 crucial optimizations for SSD usage in Ubuntu Linux

    I bought my first SSD more than 5 years ago (late 2007), for my white MacBook Core2Duo 2.0 Ghz. It m ...

  3. 使用Camstudio和KeyCastOW来录屏制作软件Demo视频

    博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:使用Camstudio和KeyCastOW来录屏制作软件Demo视频.

  4. lock语句的递归问题

    原文地址 前几天在网上闲逛,无意中看到有这么一道题及其答案,如下: 根据线程安全的相关知识,分析以下代码,当调用test方法时i>10时是否会引起死锁?并简要说明理由. ) { i--; tes ...

  5. RSS实例文档

    <?xml version="1.0" encoding="ISO-8859-1" ?> <rss version="2.0&quo ...

  6. 仰视源代码,实现memcpy

    C++实现内存的复制 通常我们使用深复制就是通过内存复制实现的,可是对象的复制涉及到基类派生类及其相关类的问题.这里不讨论. 目的为了可以明确内存复制的底层实现. void* memcpy(void* ...

  7. VS中调用SQL SERVER存储过程

     存储过程是经过编译的,永久保存在数据中的一组SQL语句,通过创建和使用存储过程能够提高程序的重用性和扩展性,为程序提供模块化的功能,还有利于对程序的维护和管理.以下就详谈一下,VB.NET怎样调 ...

  8. Spring3.0 AOP 具体解释

    一.什么是 AOP. AOP(Aspect Orient Programming),也就是面向切面编程.能够这样理解,面向对象编程(OOP)是从静态角度考虑程序结构,面向切面编程(AOP)是从动态角度 ...

  9. tr 命令 操作字符串中字符 删除替换 等

    ip=$(cat ${path}initOauth/initinfo.txt |awk '{if(NR==1)print $0;}'|tr -d '\r'); tr命令可以对来自标准输入的字符进行替换 ...

  10. Redis学习手册(事务)

    一.概述: 和众多其它数据库一样,Redis作为NoSQL数据库也同样提供了事务机制.在Redis中,MULTI/EXEC/DISCARD/WATCH这四个命令是我们实现事务的基石.相信对有关系型数据 ...