当我在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);
答案 0 :(得分:1)
似乎stdout
是行缓冲的,即printf
囤积输出,直到遇到换行符或其缓冲区填满为止。在第一个printf
添加换行符:
printf(" description is %s\n", b);
要确保输出缓冲区已刷新,您可以说:
fflush(stdout);
答案 1 :(得分:1)
您也可以随时使用fflush()
刷新缓冲区