微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用printf格式在C中打印等宽列

我想在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);

原文地址:https://www.jb51.cc/c/110644.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐