0

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

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

2 回答 2

1

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

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

为了确保输出缓冲区被刷新,你可以说:

fflush(stdout);
于 2012-09-13T19:40:29.217 回答
1

您也可以随时使用 fflush() 刷新缓冲区

于 2012-09-13T19:42:50.767 回答