关于stdin流以及缓冲区浅谈

本文介绍了stdin流作为标准输入的概念,强调了流与内存缓冲区的关系。文中详细讨论了缓冲区的三种类型:全缓冲、行缓冲和不带缓冲,并举例说明了它们在不同场景下的应用。同时,文章提到了缓冲区大小通常是4096个字节,并列举了触发缓冲区刷新的几种情况。最后,针对输入数据时可能出现的缓冲区堵塞问题,提出了解决方案。
摘要由CSDN通过智能技术生成

        突然觉得自己看了很多别人写的东西,学到很多,可惜以后每次都遇到问题忘了又得去网上一通乱找,还找不到自己当初看的写的较好一些东西资料,索性决定从现在起把自己每天获得的看到的一些东西和总结写到博客里面。

不多说了,接下来开始说主题,探讨下我刚刚收集的一些关于stdin其实是流的资料吧。

      简单来说,<stdin>是一个专用的文件句柄。解释下句柄吧(句柄是操作系统在生成对象时分配给对象的唯一标识,句柄不同于指针。如果你得到一个对象的指针,那你就可以对此对象做一切操作!于是系统不给你指针,而是给用户一个加了限制的,用于跟踪对象的指针的标识——句柄!系统使用句柄对外提供服务就相对安全了,操作系统是通过API提供服务的,对于用户来说,句柄等同于对象指针,但实际上句柄和指针不是一回事!)

    刚刚看了书,发现自己真是什么都不懂啊,长了很多姿势。(stdin)就是标准输入的意思。就是以终端(计算机)为对象;即从键盘输入数据,运行结果到显示器屏幕上(就叫标准输入输出);再来解释下流的概念(流这个概念也解释不通,各种说法都有,反正我就暂理解为数据传输的字节序列吧)实际上,在内存中为每个数据流开辟一个内存缓冲区,用来存放流中的数据。当你向显示器输出数据时比如用(cout<<),现将这些数据送到程序中的输出缓冲区保存,直到缓冲区满了或遇到endl,就将缓冲区的全部数据送到显示器显示出来。在输入时,从键盘输入的数据先放在键盘缓冲区中,当按回车键时,键盘缓冲区中的数据输入到程序的输入缓冲区里。形成cin流。然后用提取预算符提取数据送给程序的有关变量。总之流是与内存缓冲区相对应的,或者说,缓冲区中的数据就是流。

 接下来举几个例子说明:

#include<stdio.h>
int main()
{
char a;
char b;
scanf("%c",&a);
scanf("%c",&b);
printf("%d %d",a,b);
}

当你在键盘按下q之后就会打印出结果:

113 10
出现这个原因就是scanf()函数
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值