スペース付きの左パッド printf

「Hello」という単語を 40 文字幅の列に印刷し、左側にスペースを埋め込む場合は、次を使用します。

char *ptr = "Hello";
printf("%40s\n", ptr);

これにより、35 個のスペースが得られ、次に「Hello」という単語が表示されます。これは、列の幅がわかっているときにデータをフォーマットする方法ですが、データが変更されます (まあ、1 です) できる方法です)。

正確に 40 個のスペースとテキストが必要であることがわかっている場合は、40 個のスペースを定数に保存して出力します。複数の行を印刷する必要がある場合は、複数の printf を使用します 上記のようなステートメントを実行するか、ループで実行して ptr の値を変更します


この関数を使用して、出力をインデントします (たとえば、ツリー構造を印刷するため)。 indent 文字列の前のスペースの数です。

void print_with_indent(int indent, char * string)
{
    printf("%*s%s", indent, "", string);
}

int space = 40;
printf("%*s", space, "Hello");

このステートメントは、40 文字の行を予約し、行の最後に文字列を出力します (行の合計長が 40 で一定になるように余分なスペースを削除します)。次のように文字と整数にも同じことが使用できます:

printf("%*d", space, 10);
printf("%*c", space, 'x');

パラメータを使用してスペースを決定するこの方法は、可変数のスペースが必要な場合に役立ちます。これらのステートメントは、次のように整数リテラルでも機能します:

printf("%*d", 10, 10);
printf("%*c", 20, 'x');
printf("%*s", 30, "Hello");

これが将来私のような人に役立つことを願っています。