私のコードでは、以下のように snprintf を使用しており、次の動作を確認できます。
char text[30] = {0};
snprintf(text, sizeof(text), "%s", "hello");
printf("Interm... %s\n", text);
snprintf(text, "%20s", text);
printf("At the end ... %s\n", text);
出力
Interm... hello
At the end ...
ご覧のとおり、snprintf の送信元と送信先が同じであれば、バッファをクリアします。出力を 20 年代の書式指定子にしたい。複数の文字列を追加し、最後のステップでフォーマット指定子を実行する必要があるため、最初のステップ自体でこれを行うことはできません。
一時バッファにコピーし、そこから元のバッファにコピーすることが唯一の可能な解決策ですか? これに光を当ててください。