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 に答える