char[] name;
din.readf("%s", &name);

printf("%.*s\n", name);
printf("%s%.*s%s", toMBSz("おれは"), name, toMBSz("だ\n")); // 1
printf("%.*s%.*s%.*s", "おれは", name, "だ\n"); // 2
printf("%s%s%s", toMBSz("おれは"), toMBSz(name), toMBSz("だ\n")); // 3

>村田
村田
おれは村田だ
縺翫l縺ッ村田縺
Error: 4invalid UTF-8 sequence

// 3 のところで toMBSz にSJISを渡していたのが原因のようです

あと
din.readf("%s", name);
とすると文字列が空になります。
なんとなく違和感ありますが、こういうもんだと思うことにします。