printf打印不出来?cout却可以

Posted milaiko

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了printf打印不出来?cout却可以相关的知识,希望对你有一定的参考价值。

printf打印不出来,cout却可以?

今天在编写关于网络编程的程序时,printf函数硬是打印不出来,而cout可以,为什么?

大家都知道,服务器为了得到客户端的请求,是会用一个while循环去等待客户端的。而正是因为这个while导致了printf的内容放在缓存区里面没有刷出来。

标准情况是等缓存区满了以后才输出,称为标准输出流。

举个例子

#include<stdio.h>
int main()
	int a = 10;
	printf("%d", a);
	while(1)
	 a+=1;
	 //其实为空也行
	
	return 0;
;

执行之后会发现printf的内容没有出来。

有意思的是,当加入了cout,两个输出内容都有了。

#include<stdio.h>
#include<iostream>
using namespace std;
int main()
	int a = 10;
	printf("%d", a);
	cout << a << endl;
	while(1)
	 a+=1;
	 //其实为空也行
	
	return 0;
;
//out 
a
a

那么到底怎样才能是我的printf函数输出呢?

在printf后面假如fllush(stdout);这样就可以立刻刷出来了。

#include<stdio.h>
#include<iostream>
using namespace std;
int main()
	int a = 10;
	printf("%d", a);
	fllush(stdout);
	while(1)
	 a+=1;
	 //其实为空也行
	
	return 0;
;

以上是关于printf打印不出来?cout却可以的主要内容,如果未能解决你的问题,请参考以下文章

格式化char*,类似于“printf”,但不打印出来

为啥 printf() 可以在内核中工作,但使用 std::cout 不能?

为啥 printf() 可以在内核中工作,但使用 std::cout 不能?

cout和printf不能混用

如何用 cout 打印函数指针?

c的printf怎么输出枚举类型变量