《APUE》第五章笔记
第五章具体介绍了标准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》第五章笔记的更多相关文章
- 《HALCON数字图像处理》第五章笔记
目录 第五章 图像运算 图像的代数运算 加法运算 图像减法 图像乘法 图像除法 图像逻辑运算(位操作) 图像的几何变换 图像几何变换的一般表达式 仿射变换 投影变换 灰度插值 图像校正 我在Gitee ...
- 《HALCON数字图像处理》第一、二章笔记
目录 第一章 绪论 1.1 图像和图像处理 1.1.1 图像 1.1.2 数字图像 1.1.3 图像处理及其发展过程 1.2 数字图像处理的步骤和方法 1.3 数字图像处理系统的硬件组成 1.4 数字 ...
- 数字图像处理(MATLAB版)学习笔记(2)——第2章 灰度变换与空间滤波
0.小叙闲言 1.本章整体结构 2.书中例子 例2.1 主要是使用函数imadjust,来熟悉一下灰度处理,体验一把 >> imread('myimage.jpg'); >> ...
- 数字图像处理(MATLAB版)学习笔记(1)——第1章 绪言
0.下定决心 当当入手数字图像处理一本,从此开此正式跨入数字图像处理大门.以前虽然多多少少接触过这些东西,也做过一些相关的事情,但感觉都不够系统,也不够专业,从今天开始,一步一步地学习下去,相信会有成 ...
- 【数字图像处理】五.MFC图像点运算之灰度线性变化、灰度非线性变化、阈值化和均衡化处理具体解释
本文主要讲述基于VC++6.0 MFC图像处理的应用知识,主要结合自己大三所学课程<数字图像处理>及课件进行解说.主要通过MFC单文档视图实现显示BMP图片点运算处理.包含图像灰度线性变换 ...
- 《HALCON数字图像处理》第四章笔记
目录 第四章 HALCON数据结构 HALCON Image图像 图像通道 HALCON Region区域 Region的初步介绍 Region的点与线 Region的行程 Region的区域特征 H ...
- 《HALCON数字图像处理》第三章笔记
目录 第三章 HALCON图像处理基础 HALCON控制语句 HALCON算子 HALCON图像处理入门 HALCON图像读取 HALCON图像显示 图形窗口 图像显示 显示文字 HALCON图像转换 ...
- 《HALCON数字图像处理》第六章笔记
目录 第六章 图像增强 图像增强的概念和分类 灰度变换 直方图处理 图像的平滑 图像的锐化 图像的彩色增强 我在Gitee上建了个仓库,会将学习书本的时候打的一些代码上传上去,笔记中所有代码都在仓库里 ...
- 鸟哥的Linux私房菜:基础学习篇 —— 第五章笔记
1.Linux一般将文件可存取的身份分为三个类 别,分别是 owner/group/others,且三种身份各有 read/write/execute 等权限.其中 root 的权限最高. 2.在我们 ...
随机推荐
- S_ISREG等几个常见的宏 struct stat
S_ISLNK(st_mode):是否是一个连接.S_ISREG(st_mode):是否是一个常规文件.S_ISDIR(st_mode):是否是一个目录S_ISCHR(st_mode):是否是一个字符 ...
- Python dictionary implementation
Python dictionary implementation http://www.laurentluce.com/posts/python-dictionary-implementation/ ...
- #pragma_pack(n)_与___attribute(aligned(n))
#pragma pack(n) 与 __attribute(aligned(n)) 在C语言中,结构是一种复合数据类型,其构成元素既可以是基本数据类型(如int.long.float等)的变量,也 ...
- c语言数组的初始化
#include "stdio.h" int main() { ][]; a[][]="1,2,3,4,5,6,7,8,9,10,11,12"; ]=a,*p= ...
- A very hard Aoshu problem
A very hard Aoshu proble Problem Description Aoshu is very popular among primary school students. It ...
- 安装DirectX SDK时出现Error Code:s1023 的解决方案
刚刚安装DXSDK_Jun10时(下载地址:http://download.microsoft.com/download/A/E/7/AE743F1F-632B-4809-87A9-AA1BB3458 ...
- 如何向Android模拟器打电话发短信
1. 启动Android Emulator, 查看标题栏找出端口.一般是android emulator(5554),其中5554就是端口. 2. 打开命令行,输入telnet localhost 5 ...
- MySQL5.6 linux源码安装
安装mysql 创建mysql数据目录 mkdir -p /usr/local/mysql --安装目录 mkdir -p /mysql/data ---数据目录 mkdir -p /mysql/lo ...
- linux高可用集群(HA)原理详解(转载)
一.什么是高可用集群 高可用集群就是当某一个节点或服务器发生故障时,另一个 节点能够自动且立即向外提供服务,即将有故障节点上的资源转移到另一个节点上去,这样另一个节点有了资源既可以向外提供服务.高可用 ...
- oracle 取随机数据
--取随机数据 select dbms_random.value from dual; ); --百分比