码迷,mamicode.com
首页 > 其他好文 > 详细

缓冲区

时间:2016-03-20 10:31:43      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:缓冲区

引言:我们先来看一个程序:

int main()

{

                 char ch1;

                 char ch2;

                 scanf( "%c", &ch1);

                 ch2 = getchar();

                 system( "pause");

                 return 0;

}

技术分享技术分享

可以看到,当输入a之后程序就停止了,我们不禁思问,ch2为什么不能输入???

这时因为当输入a之后,又输入了一个回车,getchar()将回车接受了,因此程序结束



程序输出有两种方式:

一种是即时处理,一个一个处理。这方式会给系统造成负担。

一种是先缓存起来,到一定数量在处理。这种方式方式就是缓冲区处理,能够提高效率。


缓冲区 分为三种类型:全缓冲、行缓冲和不带缓冲

1、全缓冲

在这种情况下,当填满标准I/O缓存后才进行实际I/O操作。全缓冲的典型代表是对磁盘文件的读写。

2、行缓冲

在这种情况下,当在输入和输出中遇到换行符时,执行真正的I/O(流)操作。这时,我们输入的字符先存放在缓冲区,等按下回车键换行时才进行实际的I/O操作。典型代表是键盘输入数据。

3、不带缓冲

也就是不进行缓冲,标准出错情况stderr是典型代表,这使得出错信息可以直接尽快地显示出来。

针对开篇介绍的程序,作如下修改,就可达到预想功能:

int main()

{

                 int c;

                 char ch1;

                 char ch2;

                scanf( "%c", &ch1);

                 while ((c = getchar()) != EOF &&c != ‘\n‘)

                {

                                ;

                }

                ch2 = getchar();

                printf( "ch1=%c,ch2=%c\n", ch1, ch2);

                system( "pause");

                 return 0;

}

这就是缓冲区的最简单的例子。


本文出自 “11132019” 博客,请务必保留此出处http://11142019.blog.51cto.com/11132019/1752998

缓冲区

标签:缓冲区

原文地址:http://11142019.blog.51cto.com/11132019/1752998

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!