加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用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);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读