printf()函数什么时候刷新缓存
来源:互联网 发布:淘宝童装店简介 编辑:程序博客网 时间:2024/06/01 10:04
大家应该都知道,printf(),是先将格式化好的信息先输到缓冲区上,因为输入输出的缓存为行缓存,所以当填满I/O缓存后,才进行实际I/O操作或者遇到换行符‘\n’(或者执行fflush、floce、exit、return),缓存大小为1K。
请看如下程序:
#include <stdio.h>int main(int argv,const char *argv[]){int n;printf("inputs:");scanf("%d",&n);printf("%d\n",n);return 0;}
编译运行后:
root@linux:~/test# ./a.out input:
咦!编译运行后发现,input:怎么被刷新出来了,根据以上的逻辑不是只有遇到换行符‘\n’(或者执行fflush、floce、exit、return)才会从缓存中刷新出来吗?怎么会从缓存中刷新出来打印到屏幕上呢?
那是因为scanf()函数在缓存里面读数据时,会先将缓存区刷新,然后再读取数据。
不止scanf()这个函数在缓存里面读数据时,会先将缓存区刷新,还有getc()、gets()、fgetc()、fgets()这几个读取数据时,也会会先将缓存区刷新,然后再读取数据。当然gets()是不建议使用的,就差被逐出标准了。
缓存类型:
全缓存:当填满I/O缓存后才进行实际I/O操作(或者执行fflush、flose、exit、return),4K大小
行缓存:当填满I/O缓存后才进行实际I/O操作或者遇到新航服‘\n’(或者执行fflush、floce、exit、return),1K大小
无缓存:标准错误输出strerr
阅读全文
0 0
- printf()函数什么时候刷新缓存
- 什么时候printf返回0?
- 什么时候使用缓存
- printf缓冲区刷新
- printf函数
- printf()函数
- printf函数
- printf () 函数
- printf()函数
- printf函数
- printf函数
- 函数----printf
- printf函数
- printf()函数
- printf函数
- printf函数
- printf函数
- printf()函数
- PHP的静态及类中声明的常量
- HDU1028
- spirngMVC工作原理学习
- redis搭建
- 欢迎使用CSDN-markdown编辑器
- printf()函数什么时候刷新缓存
- Mac OS上安装使用MongoDB
- Java复习-面向对象的特征
- 多线程
- 4.项目的建立
- spring 整合 shiro 之用户验证
- 定义对象模型(定义表)
- 高年级学长给计算机大一学生的学习建议
- 设计模式--适配器模式