printf を使用するときに、文字列の左側にスペースを埋め込むにはどうすればよいですか?
たとえば、「Hello」の前に 40 個のスペースを付けて印刷したいとします。
また、印刷したい文字列は複数の行で構成されています。各行を個別に印刷する必要がありますか?
編集: 明確にするために、すべての行の前に正確に 40 個のスペースを印刷したいと考えています。
printf を使用するときに、文字列の左側にスペースを埋め込むにはどうすればよいですか?
たとえば、「Hello」の前に 40 個のスペースを付けて印刷したいとします。
また、印刷したい文字列は複数の行で構成されています。各行を個別に印刷する必要がありますか?
編集: 明確にするために、すべての行の前に正確に 40 個のスペースを印刷したいと考えています。
「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");
これが将来私のような人に役立つことを願っています。
文字列の前に正確に 40 個のスペースが必要な場合は、次のようにします。
printf(" %s\n", myStr );
それがあまりにも汚れている場合は、次のことを実行できます (ただし、40 個のスペースを手動で入力するよりも遅くなります)。
printf("%40s%s", "", myStr );
文字列を 40 桁目に並べたい場合 (つまり、一番右の文字が 40 桁目になるように最大 39 個のスペースを先行させたい場合)、次のようにします。
printf("%40s", myStr);
次のようにして、文字列の後に「最大」40 個のスペースを配置することもできます。
printf("%-40s", myStr);