8 字符输入输出和输入验证

本文介绍了计算机输入输出中的缓冲区概念,包括完全缓冲和行缓冲,并解释了文件结尾的标识EOF。此外,还探讨了流的概念,以及如何通过重定向实现标准输入输出的控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

缓存区

缓冲区即输入到输出之间,输入会被暂存在这里,直到满足一定条件,输出内容才从缓冲区到输出。

具体的条件即为下面两种:

缓冲
完全缓冲
行缓冲
  • 完全缓冲:直到缓冲区被占满,才进行输出操作
  • 行缓冲:遇到换行符时,才进行输出。

比如下面这段代码:

#include "stdio.h"

int main() {
    char inputChar;
    while ((inputChar=getchar())!='#')
        putchar(inputChar);
    return 0;
}

在这里虽然我们使用了读取单个字符的输入函数:getchar(),但是我们可以直接输入多个值,只有敲回车后才会显示:

image-20210323220135107

这里就是行缓冲的效果了。


文件结尾

流 / stream

计算机底层不同的I/O函数,导致了I/O操作的种类很多,而如果我们将这些区分都在标准I/O库层面进行屏蔽,提供给开发人员统一的操作对象,是不是会方便很多,所以,这里对于开发人员来说,之前是操作文件,实际上就是操作


  • 字符串的结尾:\0

  • 行的结尾:\n

  • 文件的结尾:EOF

这里的EOF是啥呢?就是在stdio.h中定义的预变量,标志着一个文件的结尾。其具体的值由系统决定,即不同的系统定义不同。

#include "stdio.h"

int main() {
    int intput;
    while ((intput=getchar())!=EOF)
        putchar(intput);
    return 0;
}

这里因为我是mac的环境,我也不知道怎么输入文件的结尾符号,书上说的ctrl+dctrl+z都不行。

重定向

键盘
U盘
光盘
......
stdin流

stdin代表的是标准输入,即对于stdin来说,输入设备它并不关系,反正对于它来说就是标准输入流。

比如上面的输入代码:

image-20210323223543828

这样就演示了一下如何做重定向输入。

至于输出部分,还是前面缓冲区的内容,行缓冲,遇到换行符就会输出。

重定向输出用的就比较多了,最简单的一个shell命令就可以演示:

image-20210323224012973

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值