使用gcc和glib的奇怪行为?

时间:2012-09-13 19:38:54

标签: c gcc glib

当我在if语句之后再次打印b时,它只打印描述,非常奇怪的行为,当我删除它不打印的最后一行description is ... dos时,任何人都知道为什么会发生这种情况以及如何解决这个问题?感谢

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);

2 个答案:

答案 0 :(得分:1)

似乎stdout是行缓冲的,即printf囤积输出,直到遇到换行符或其缓冲区填满为止。在第一个printf添加换行符:

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

确保输出缓冲区已刷新,您可以说:

fflush(stdout);

答案 1 :(得分:1)

您也可以随时使用fflush()

刷新缓冲区