c - 使用 gcc 和 glib 的奇怪行为?

标签 c gcc glib

当我在 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/

相关文章:

c++ - 构造函数/析构函数计数不匹配

c++ - C/C++ 指针,ptr+1 = ptr +1 byte 还是 ptr+1*sizeof(pointer_type)?

c - g_hash_table_insert malloc() : memory corruption

c++ - 如何让 g_print() 出现?

c++ - 提取 PDF 的不同修订版

c - 重新分配字符串文字

c++ - 线程 : Segmentation fault error

c - 将 glist 指针作为参数传递以反射(reflect)列表中的更改不起作用

c++ - 为什么使用 conio.h?

java - float 与双