回答:
「Hello」という単語を、幅が40文字で、左側にスペースが埋め込まれている列に出力する場合は、以下を使用します。
char *ptr = "Hello";
printf("%40s\n", ptr);
それはあなたに35のスペースを与え、そして単語「こんにちは」を与えます。これは、列の幅がわかっているときにデータをフォーマットする方法ですが、データは変化します(まあ、それはそれを行う方法の1つです)。
正確に40スペースが必要であることがわかっている場合は、テキストを40スペースを定数に保存して印刷します。複数の行を印刷する必要がある場合はprintf
、上記のような複数のステートメントを使用するか、ループの中でそれを行い、ptr
そのたびに値を変更します。
この関数を使用して、出力をインデントします(たとえば、ツリー構造を印刷するため)。indent
文字列の前のスペースの数です。
void print_with_indent(int indent, char * string)
{
printf("%*s%s", indent, "", string);
}
printf(..., indent, "", ...)
)
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");
これが将来私のような人に役立つことを願っています。
error: empty character constant
た''
。そうじゃないの' '
?
"Hello"
も、彼は例を使うべきでした
文字列の前にちょうど40個のスペースが必要な場合は、次のようにします。
printf(" %s\n", myStr );
それがあまりにも汚い場合は、行うことができます(ただし、40のスペースを手動で入力するよりも遅くなります)。
printf("%40s%s", "", myStr );
文字列を40桁目に並べる場合(つまり、39までのスペースを空けて、右端の文字が40桁になるようにします)、次のようにします。
printf("%40s", myStr);
文字列の後に「最大」40スペースを置くこともできます。
printf("%-40s", myStr);