eclipse调试C代码时printf()不能输出到控制台的解决方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/w_virgil/article/details/83088228

1、问题

在ecplise下使用CDT开发C/C++程序中,使用debug调试时,到了printf 打印函数,在console窗口中并没有打印出信息来,停止后才会有输出。

2、原因

在debug调试时, eclipse 将输出的内容存放到了输出缓存区中,没有及时的输出到控制台。等到调试结束时,再将所有的信息一并打印出来。

3、解决方法

有两种方法,如下:
1, 在每个printf函数之后加上 fflush 函数进行刷新

printf("Hello world\r\n");
fflush(stdout);

2 在main函数开始设置缓冲类型

int main()
{
	setvbuf(stdout,NULL,_IONBF,0);
	printf("Hello world\r\n");
	//...
}

setvbuf的含义如下:

函数名: setvbuf
用 法: int setvbuf(FILE *stream, char *buf, int type, unsigned size);
type : 期望缓冲区的类型:
_IOFBF(满缓冲):当缓冲区为空时,从流读入数据。或者当缓冲区满时,向流写入数 据。
_IOLBF(行缓冲):每次从流中读入一行数据或向流中写入一行数据。
_IONBF(无缓冲):直接从流中读入数据或直接向流中写入数据,而没有缓冲区。
size : 缓冲区内字节的数量。

猜你喜欢

转载自blog.csdn.net/w_virgil/article/details/83088228