标准输出的缓存问题
来源:互联网 发布:淘宝上的快排能买吗 编辑:程序博客网 时间:2024/04/30 06:06
今天在编写一道算法问题的代码时,遇到一个和输入输出缓冲有关的问题。代码如下:
/* * test_stdout.c * * Created on: 2013-4-20 * Author: Administrator */#include <stdio.h>int main(){int a;printf("Please input a value:");scanf("%d", &a);printf("The value of a is: %d\n", a);return 0;}执行结果如下:
3
Please input a value:The value of a is: 3
起初我很奇怪为什么调用printf函数的打印为什么会出现在输入变量a的动作之后,但是后来在他们之间加了一段代码后,终端输出逻辑就正常了。代码如下:
#include <stdio.h>int main(){int a;printf("Please input a value:");fflush(stdout);scanf("%d", &a);printf("The value of a is: %d\n", a);return 0;}执行结果如下:
Please input a value:3
The value of a is: 3
于是在网上google了一下fflush,这个函数的作用是用来清空缓冲区的,在我们这里是清空的输出缓冲区。我们都知道stdout通常跟终端相连,通过描述符1。 如果在运行之前被重定向到非终端,那么printf会进行全缓冲,否则对一行缓冲。如果我们希望在终端及时的看到输出,那么我们需要调用该函数fflush。当然由于stdout默认是是行缓冲的,遇到\n就写内容清缓存,我们也可以采用在输出字符串末尾添加一个换行符。关于这个问题,CSDN的论坛上有一篇帖子讲的也挺详细的,给出链接如下:http://bbs.chinaunix.net/thread-693309-1-1.html
输入输出的问题还有很多,这里只是将自己在编写代码时偶然遇到的问题记录以备以后查阅。
- 标准输出的缓存问题
- php,缓存数据流(标准输出)
- printf()输出缓存问题
- printf输出缓存问题
- 标准输入,标准输出,标准错误输出缓冲问题
- 整数的标准输出
- 父子进程 和标准输出 的一点问题见解
- Linux 标准输出重定向 缺失的问题
- C++标准库流输出类的一个使用问题
- linux把标准输出赋值给变量遇到的问题
- linux 将标准输出重定向到本地缓存的实现
- petshop的缓存输出
- 关于标准输入输出的缓存
- 5 标准IO的缓存
- 深究标准IO的缓存
- 深究标准IO的缓存
- 标准输入和标准输出的read_write
- printf的标准格式化输出
- VPS使用的Linux常用维护命令入门教程
- Android优秀开源项目大全
- shell中条件判断if中的-z到-d的意思
- Codeforce 298 A snow Footprint 思维问题
- push,你到底做了啥事情????
- 标准输出的缓存问题
- oracle 10g rman 备份与恢复 之二
- 毕业5年后的总结
- 差分及延3差分在MySQL数据库中实现
- 禅道项目管理软件介绍
- ajax---简单使用Demo
- andoid 打包短信发送到gmail邮箱
- 如何在macox下面配置集成ios和android游戏教程
- AAC 文件解析及解码流程