c primer Plus第八章笔记

该书应从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%读取字符的时候不会跳过。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值