概述
该书应从8章之后开始学习
现在开始第8章 (p199) 字符输入输出
缓冲区:是一个存放内容的临时存储区域
为什么要设置缓冲区:一、将若干个字符作为一个块进行传输比逐个发送这些字符耗时少。二、如果输入了一个错的字符,可以用键盘的更正功能进行修改。当按下回车键的时候就发送输入的字符。
但是,交互性的程序需要非缓冲输入。因此缓冲区与非缓冲区都有各自的用途。
缓冲分为两类:完全缓冲(fully buffered)I/O和行缓冲(Lined-buffered)I/O。前者是缓冲区满了时被清空(内容被发送到目的地),经常出现在文件输入中。缓冲区的大小取决于系统。后者则是遇到换行字符时被清空。键盘输入是标准的行缓冲。
ANSIC 将缓冲输入作为标准,是因为一些计算机被设计为不允许非缓冲输入。但是在那些兼容的机器上,编译器也提供了专门用于非缓冲输入的函数系列,位于conio.h的头文件中,我们常用的用于回显的非缓冲输入的getche()。(回显的意思就是我们输入的字符会在屏幕上显示,相反的不回显的输入将不会在屏幕上显示输入的字符)。
流(stream)是一个理想化的数据流,实际输入和输出映射到这个数据流。所以实际上c程序处理的是一个流而不是直接处理文件。
键盘输入被称为stdin的流来表示,而到屏幕(或打字机或其他输入设备)上的输入由一个被称为stdout的流表示。
getchar(),putchar(),printf(),scanf()都是标准I/O的成员,他们都与这两个流打交道。
文件结束符:EOF 其定义为:#define EOF (-1) 通常是ctrl+z
重定向 使用一个不同的通道重定向输入和输出。例如输入到文件和从文件输出,就是将stdin流重新分配至文件。
如有编译一个读取键盘输入字符并显示的char.c 文件,生成char.exe的文件,要运行到可以在dos环境下输入char就可以执行了,char<abc.txt则可以将abc.txt文本文件中字符输入到缓冲区中。组合重定向:char<abc.txt>bcd.txt 制作文件abc.txt的副本 因此我们可以重定向输入和输出了
混合输入数字和字符
getchar()会读取每个字符,包括空格、制表符和换行符;而scanf()读取数字的时候会跳过空格、制表符和换行符 但是scanf()使用c%读取字符的时候不会跳过。
最后
以上就是笨笨金毛为你收集整理的c primer Plus第八章笔记的全部内容,希望文章能够帮你解决c primer Plus第八章笔记所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复