第五章具体介绍了标准I/O库的各种细节,要是一一列出来,有费精力且可能列不全,故只讲平常多用到的。
标准输入输出是由一大批函数组成的。

要记住,标准输入输出是有缓冲的,就是当缓冲区的数据满了的时候,才会调用read和write函数。而在第三章的时候,是马上调用read和write函数的。

缓冲分为3种,全缓冲,行缓冲和无缓冲。跟终端相关的一般是行缓冲,而标准出错是无缓冲,文件读写的一般都是全缓冲。
改变缓冲模式的有两个函数,setbuf和setvbuf函数。个人感觉setvbuf比较好用,具体实现请翻书。

打开一个流一般是用fopen函数,关闭一个流则是用fclose函数。

读和写流分为几种,有用字符读写的,有用字符串的写的,还有读二进制文件的时候是一块块读写的。

字符读写:读的是getc、fgetc和getchar函数。getchar(void)实际上就等于fgetc(stdin),而getc和fgetc的区别在于第一个能够作为宏,而第二个只能作为函数。这三个函数出错或者读到文件末尾(EOF)都会返回-1,那怎么区别呢?用ferror或者feof函数来区别。对应的就会有输出函数:putc函数、fputc函数和putchar函数。区别跟上述差不多。这么多个函数,一般个人认为只选定一种函数用就行,当然也要看情况。不过一般来说,我读写字符的话就用fgetc和fputc吧。

每次一行I/O:顾名思义,每次读取一行,就是当碰到换行符的时候就会输入或输出。读的是fgets和gets。强烈建议用fgets而不用gets函数,因为gets函数没有指定输入字符的个数,也就是有可能会造成溢出,不安全。fputs和puts就负责输出。两个函数的相同点就是输出一个以NULL结尾的字符串,但是区别就是puts将一个以NULL结尾的字符串写道标准输出,终止符不写出。但是puts然后又将一个换行符写道标准输出。就是如果用fputs函数的话,我们就必须自己处理换行符(如果那个字符串不包括换行符的话)。

二进制I/O的话就是fread和fwrite函数了,没什么好说的,具体请翻书。

定位流的话就用ftell和fseek组合,不过偏移值是长整型(不过应该没关系吧)

格式化输入输出的就是printf和scanf的函数族了。有很多变种函数,但都是格式化的。具体请翻书。

最后,我认为这笔记只是概况,有问题还是要查书,看多了,就自然记住了。

《APUE》第五章笔记的更多相关文章

  1. 《HALCON数字图像处理》第五章笔记

    目录 第五章 图像运算 图像的代数运算 加法运算 图像减法 图像乘法 图像除法 图像逻辑运算(位操作) 图像的几何变换 图像几何变换的一般表达式 仿射变换 投影变换 灰度插值 图像校正 我在Gitee ...

  2. 《HALCON数字图像处理》第一、二章笔记

    目录 第一章 绪论 1.1 图像和图像处理 1.1.1 图像 1.1.2 数字图像 1.1.3 图像处理及其发展过程 1.2 数字图像处理的步骤和方法 1.3 数字图像处理系统的硬件组成 1.4 数字 ...

  3. 数字图像处理(MATLAB版)学习笔记(2)——第2章 灰度变换与空间滤波

    0.小叙闲言 1.本章整体结构 2.书中例子 例2.1 主要是使用函数imadjust,来熟悉一下灰度处理,体验一把 >> imread('myimage.jpg'); >> ...

  4. 数字图像处理(MATLAB版)学习笔记(1)——第1章 绪言

    0.下定决心 当当入手数字图像处理一本,从此开此正式跨入数字图像处理大门.以前虽然多多少少接触过这些东西,也做过一些相关的事情,但感觉都不够系统,也不够专业,从今天开始,一步一步地学习下去,相信会有成 ...

  5. 【数字图像处理】五.MFC图像点运算之灰度线性变化、灰度非线性变化、阈值化和均衡化处理具体解释

    本文主要讲述基于VC++6.0 MFC图像处理的应用知识,主要结合自己大三所学课程<数字图像处理>及课件进行解说.主要通过MFC单文档视图实现显示BMP图片点运算处理.包含图像灰度线性变换 ...

  6. 《HALCON数字图像处理》第四章笔记

    目录 第四章 HALCON数据结构 HALCON Image图像 图像通道 HALCON Region区域 Region的初步介绍 Region的点与线 Region的行程 Region的区域特征 H ...

  7. 《HALCON数字图像处理》第三章笔记

    目录 第三章 HALCON图像处理基础 HALCON控制语句 HALCON算子 HALCON图像处理入门 HALCON图像读取 HALCON图像显示 图形窗口 图像显示 显示文字 HALCON图像转换 ...

  8. 《HALCON数字图像处理》第六章笔记

    目录 第六章 图像增强 图像增强的概念和分类 灰度变换 直方图处理 图像的平滑 图像的锐化 图像的彩色增强 我在Gitee上建了个仓库,会将学习书本的时候打的一些代码上传上去,笔记中所有代码都在仓库里 ...

  9. 鸟哥的Linux私房菜:基础学习篇 —— 第五章笔记

    1.Linux一般将文件可存取的身份分为三个类 别,分别是 owner/group/others,且三种身份各有 read/write/execute 等权限.其中 root 的权限最高. 2.在我们 ...

随机推荐

  1. LumiSoft.Net邮件接收乱码问题解决

    本文非本人编写,转载自:http://www.cnblogs.com/youngerliu/archive/2013/05/27/3101488.html 今天遇到用LumiSoft.Net这个组件收 ...

  2. 如何扩大VMware虚拟机的硬盘磁盘空间大小

    首先,在虚拟机配置界面通过界面配置,直接扩大虚拟机硬盘大小: 而后,登陆虚拟机,在windows磁盘管理,更多操作中直接“重新扫描磁盘”,操作系统自动找到了多出来的磁盘空间: 最后,在老磁盘分区上通过 ...

  3. QT断点续传

    //功能:    根据一个URL地址将数据保存到指定路径下,支持断点续传//参数:    url            --需要访问的URL地址//         SavePath       -- ...

  4. 不安装oracle客户端也可以使用pl/sql developer

    通常情况下,用PL/SQL Developer连接Oracle是需要安装Oracle客户端软件的,这也就意味着你的硬盘将被占用大约1G-2G的空间,对于Windows操作系统来说,你还会多出一些开机自 ...

  5. Python_爬虫4

    Python爬虫入门(8):Beautiful Soup的用法 上一节我们介绍了正则表达式,它的内容其实还是蛮多的,如果一个正则匹配稍有差池,那可能程序就处在永久的循环之中,而且有的小伙伴们也对写正则 ...

  6. (转)ReSharper 配置及用法

    1:安装后,Resharper会用他自己的英文智能提示,替换掉 vs2010的智能提示,所以我们要换回到vs2010的智能提示 2:快捷键.是使用vs2010的快捷键还是使用 Resharper的快捷 ...

  7. 深入分析 Linux 内核链表

    转载:http://www.ibm.com/developerworks/cn/linux/kernel/l-chain/   一. 链表数据结构简介 链表是一种常用的组织有序数据的数据结构,它通过指 ...

  8. PHP.5-DIV+CSS布局网站首页实例

    DIV+CSS布局网站首页实例 网站页面布局 http://www.sj33.cn/digital/wyll/201501/42379.html[页头.页脚.侧边栏和内容区域] #避免各浏览器对CSS ...

  9. CSS完成三角形

    通过设置div的border属性,来实现! 将div的height和width属性分别设置为0px,将4边的border值设置为一样的宽度,通过调节边框的颜色课看到效果. <style> ...

  10. 远程管理之VNC

    远程管理的基本概念 ①RDP(remote desktop protocol)协议 远程桌面协议,我们常用的windows操作系统就是的远程桌面管理就是基于该协议的,更多有关RDP协议的可以查看百度百 ...