当我在 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);
最佳答案
似乎 stdout 是行缓冲的,即 printf 会囤积输出,直到遇到换行符或其缓冲区已满。在第一个 printf
中添加换行符:
printf(" description is %s\n", b);
为了确保输出缓冲区被刷新,你可以说:
fflush(stdout);
关于c - 使用 gcc 和 glib 的奇怪行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12413577/