質問

printfを使用するときに、文字列の左側にスペースを埋め込むにはどうすればよいですか?

たとえば、「こんにちは」と印刷したいその前に40個のスペースがあります。

また、印刷する文字列は複数行で構成されています。各行を個別に印刷する必要がありますか?

編集:明確にするために、各行の前に正確に40個のスペースを印刷します。

役に立ちましたか?

解決

「こんにちは」という言葉が必要な場合幅が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);
}
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&quot ;,"&quot ;, myStr);

文字列を列40に並べる(つまり、右端の文字が列40になるように最大39個のスペースを続ける)場合は、次のようにします。      printf("%40s&quot ;, myStr);

「次へ」を置くこともできます。以下を実行して、文字列の後に40個のスペースを置きます。      printf("%-40s&quot ;, myStr);

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top