1. 程式人生 > >eclipse除錯C程式碼時printf()不能輸出到控制檯的解決方法

eclipse除錯C程式碼時printf()不能輸出到控制檯的解決方法

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 : 緩衝區內位元組的數量。