使用printf格式在C中打印等宽列
发布时间:2020-12-16 03:42:25 所属栏目:百科 来源:网络整理
导读:我想在C中使用printf打印列.我写了这段代码: #include stdio.hvoid printme(char *txt1,char *txt2,char *txt3){ printf("TXT1: %9s TXT2 %9s TXT3 %9sn",txt1,txt2,txt3);}int main(){ printme("a","bbbbbbbeeeeebbbbb","e"); printme("aaaaaaaa","bbbbbb
我想在C中使用printf打印列.我写了这段代码:
#include <stdio.h> void printme(char *txt1,char *txt2,char *txt3) { printf("TXT1: %9s TXT2 %9s TXT3 %9sn",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 %.*sn",s1,s2,s3,txt3); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |