2012-09-13 43 views
0

它只打印說明當我打印後,再次打印B語句,真的很奇怪的行爲,當我刪除最後一行它不打印description is ...任何人都知道爲什麼會發生這種情況,我怎麼能解決這個問題?由於使用gcc和glib的怪異行爲?

char * b; 
if (list!= NULL){ 
b = strdup ((char *)g_object_get_data(G_OBJECT(list->data), "description")); 
printf(" description is %s ", b); 
} 
printf("\nprinting b: %s\n", b); 

回答

1

這似乎stdout是行緩衝,即printf囤積輸出,直到遇到一個換行符或它的緩衝區已滿。一個新行添加到第printf

printf(" description is %s\n", b); 

確保輸出緩衝區被刷新,你可以說:

fflush(stdout); 
1

您還可以刷新緩衝區,任何時間fflush()