2 a524354281 a524354281 于 2017.09.03 11:36 提问

C语言中关于printf缓冲区!程序结束会自动刷新缓冲区吗?

int main()
{
printf("hello world");
while(1);
}
这个程序为啥终端还会输出hello world呢?

第一次提问,各路大神可以帮帮忙吗?图片说明

3个回答

qq_38204686
qq_38204686   2017.09.03 12:14

windows下好像就是这样
要输出直接输出了

qq_30069409
qq_30069409   2017.09.05 17:49

这种测试尽量在linux下做,在linux下你上面这样写是不会有输出结果的,但是如果加了\n就会有输出结果。

oyljerry
oyljerry   Ds   Rxr 2017.09.03 11:48

printf缓冲区可能刷新也可能不会。你可以flush强制刷新

a524354281
a524354281 问题是结束进程不是一定刷新缓冲区吗?
11 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
\n 刷新缓冲区问题
\n 刷新缓冲区  相关代码+理论
C语言中scanf函数与输入缓冲区
讨论下scanf函数,输入缓冲区的关系  样例来源于算法竞赛入门经典第一章实验部分的内容,经过测试发现scanf函数对于整形数据在读入时会过滤掉 空格符 、换行符 和 水平制表符。按照提示,如果b的值非法,比如说输入一个字符‘s’,那么会出现什么结果呢?void scanf_buffer(void) { int a , b; while( scanf("%d%d",&a,&b) !
printf行缓冲区的分析总结
最近在客户那调试串口的时候,read串口然后printf打印,单字符printf,发现没有输出,后来想起来printf这些标准输入输出函数也是属于标准C库glibc的,   这里就要区分一下标准库函数和系统调用了。   系统调用是内核提供给上层程序的接口,能够实现内核和上层之间的交互,系统调用在内核中的实现是软中断的方式,通过相应的中断服务例程来实现,而标准库函数是在系统调用的基础之上封装
printf写入标出输出的缓冲区刷新条件
printf缓冲区刷新条件:     1 缓冲区填满     2 写入的字符中有‘\n’ '\r'     3 调用fflush(stdout)手动刷新缓冲区     4 调用scanf要从缓冲区中读取数据时,也会将缓冲区内的数据刷新   printf为例,在printf的实现中,在调用write之前加入了IO缓冲区,这是一个用户空间的缓冲,首
【C】C语言输入输出缓冲区
1.一个“诡异”的程序先来看一个小程序,分析一下运行结果#include<stdio.h> int main() { printf("hello"); int i = 0; for(;i<10;i++) { putchar('.'); sleep(1); }
【C语言】 缓冲区问题 循环使用getchar scanf会受到换行符'\n'的干扰
有一天,一个普通的练习: #include int main(){ float price_1=1.25,price_2=0.65,price_3=0.89; float quantity_1=0.0,quantity_2=0.0,quantity_3=0.0; float total_price=0.0,total_quantity=0.0; float tot
c语言笔记——对缓冲区的理解
缓冲区有时也被称作缓存,和手机app中存在的缓存类似,它存在的目的也为了提高效率。c语言在对一个文件进行操作的时候,先将文件读取到缓冲区,然后对文件的操作都在缓冲区进行,操作完成了之后才将文件写入磁盘。缓冲区存在的原因  那么存在这样一个区域的具体原因是什么呢?其实这和计算机的分级缓存机制的原理差不多。最主要的方面就是将cpu释放出来,充分利用cpu的资源。其次因为对内存的操作速度远大于对磁盘的操作
linux下printf中"\n"刷新缓冲区的疑问(待解决--评论中的问题)
#include <stdio.h> #include <unistd.h> int main(void) { printf("hello world"); close(STDOUT_FILENO); return 0; } //什么都不输出 #include <stdio.h> #include <unistd.h>
C语言清除缓冲区的函数
C语言中清除内存缓冲区的函数是fflush( ),清除输入缓冲区用fflush(stdin); 其中stdin表示标准输入。该函数通常用在输入类函数的前面,用以清除输入缓冲区中的内容,避免接收到上次残留的内容而出错。 但是ffplush不是标准库函数,在gcc下是不支持的,笔者通过许多网上的例子亲测,只有在VC6.0编译器下,fflush才能完成它的正常功能。 fflush()用于清空文件缓冲
c语言里缓冲区的理解
从一个简单的例子开始: [cpp] view plain copy print?#include <stdio.h>  int main()  {      char a[20] ;      char str[20] ;      printf(”请输入文件名:”) ;      scanf(”%s” , a ) ;        printf(”请输入关键字:”) ;      //getcha