我想在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
所以列不等宽.基本上,我想这样做,无论我的参数中的文本多长,我的功能总是打印出一个很好的格式化列.问题是:我该怎么做?
通过saing很好我的意思是,无论文字多长时间传递给我的打印功能,它将始终打印出等宽列,例如:
我有这样的输出:
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
解决方法
您可以找到txt1,txt2和txt3的最大长度,然后格式化:
// compute the max string length of txt1 inputs in advance int s1 = strlen(firstTxt1); if (s1 < strlen(secondTxt1) s1 = strlen(secondTxt1); ... printf("%.*s %.*s %.*s\n",s1,s2,s3,txt3);