缓冲区概念
来源:互联网 发布:dede模板下载站源码 编辑:程序博客网 时间:2024/06/05 23:45
引言:我们先来看一个程序:
intmain()
{
charch1;
charch2;
scanf("%c", &ch1);
ch2 = getchar();
system("pause");
return0;
}
可以看到,当输入a之后程序就停止了,我们不禁思问,ch2为什么不能输入???
这时因为当输入a之后,又输入了一个回车,getchar()将回车接受了,因此程序结束
程序输出有两种方式:
一种是即时处理,一个一个处理。这方式会给系统造成负担。
一种是先缓存起来,到一定数量在处理。这种方式方式就是缓冲区处理,能够提高效率。
缓冲区 分为三种类型:全缓冲、行缓冲和不带缓冲:
1、全缓冲
在这种情况下,当填满标准I/O缓存后才进行实际I/O操作。全缓冲的典型代表是对磁盘文件的读写。
2、行缓冲
在这种情况下,当在输入和输出中遇到换行符时,执行真正的I/O(流)操作。这时,我们输入的字符先存放在缓冲区,等按下回车键换行时才进行实际的I/O操作。典型代表是键盘输入数据。
3、不带缓冲
也就是不进行缓冲,标准出错情况stderr是典型代表,这使得出错信息可以直接尽快地显示出来。
针对开篇介绍的程序,作如下修改,就可达到预想功能:
intmain()
{
intc;
charch1;
charch2;
scanf("%c", &ch1);
while((c = getchar()) !=EOF&&c !='\n')
{
;
}
ch2 = getchar();
printf("ch1=%c,ch2=%c\n", ch1, ch2);
system("pause");
return0;
}
这就是缓冲区的最简单的例子。
0 0
- 缓冲区概念
- 缓冲区概念及缓冲区溢出
- 112. 缓冲区的概念
- c语言输入输出缓冲区的概念
- c语言输入输出缓冲区的概念
- getchar,scanf以及缓冲区的概念
- 输入与输出缓冲区的概念
- getchar,scanf以及缓冲区的概念(转)
- c语言输入输出缓冲区的概念
- getchar、scanf以及缓冲区的概念
- getchar、scanf以及缓冲区的概念
- getchar、scanf以及缓冲区的概念
- c语言输入输出缓冲区的概念
- getchar,scanf以及缓冲区的概念!
- gen_tcp接收缓冲区易混淆概念纠正
- c语言输入输出缓冲区的概念
- getchar,scanf以及缓冲区的概念(转)
- getchar、scanf以及缓冲区的概念
- 欢迎使用CSDN-markdown编辑器
- 我的第一个安卓程序
- HashMap的遍历
- ZKoss树的一个例子
- Leetcode Largest Rectangle in Histogram
- 缓冲区概念
- Animation之tween动画
- python中的装饰器Decorator用法
- Linux文件编程综合(创建打开等)
- C语言32个关键字
- 刚刚开始学习编程
- 全局变量,局部变量和形式参数
- [1194]:Beat the Spread!
- 浮点数的比较