>419
素早いレスありがとうございます。
printf()を呼んだ後にfflush(stdout)したら、無事出力されました。

動作を見てみると、出力文字列と確保していた仮想画面が混ざってしまっているみたいです。
"test\nstring"と出力させると、

test
   string

のように、"test(1行分のスペース)string"と出力されます。
また、一度initscr()/endwin()をしてしまったら、その後は
printf()のたびにfflush()しないと出力されないようです。

ちなみに、fprintf(stderr,...)としたら即座に(fflush()しなくても)出力されました。
邪道ですが…。画面が崩れるのは上と同様です。

今は試験用コードとして
initscr();
move(2, 5);
printw("Value: %d", 5);
refresh();
nocbreak();
endwin();
refresh();
としているのですが、呼び足りない関数などありませんでしょうか?