C で printf を使用して列を印刷したいと思います。次のコードを書きました。
#include <stdio.h>
void printme(char *txt1, char *txt2, char *txt3)
{
printf("TXT1: %9s TXT2 %9s TXT3 %9s\n", txt1, txt2, txt3);
}
int main()
{
printme("a","bbbbbbbeeeeebbbbb","e");
printme("aaaaaaaa","bbbbbbbbbbbb","abcde");
return 0;
}
それは動作しますが、私はそのような出力を持っています:
TXT1: a TXT2 bbbbbbbeeeeebbbbb TXT3 e
TXT1: aaaaaaaa TXT2 bbbbbbbbbbbb TXT3 abcde
したがって、列は等幅ではありません。基本的に、引数のテキストがどれだけ長くても、関数は常に適切にフォーマットされた列を出力するようにしたいと思います。問題は次のとおりです。どうすればこれを行うことができますか?
いいと言ったのは、印刷関数に渡したテキストの長さに関係なく、常に等幅の列が印刷されることを意味していました。次に例を示します。
次のような出力があります。
a cd` fg ij
a cd fg ij
a cd fg ij
ab cd fg ij
ab cd fg i j
ab cd fg ij
ab cd fg ij
ab cde fgh ij
ab cde fgh ij
次のようにしたい (テキスト引数の長さに関係なく):
a cd` fg ij
a cd fg ij
a cd fg ij
ab cd fg ij
ab cd fg ij
ab cd fg ij
ab cd fg ij
ab cde fgh ij
ab cde fgh ij