gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 16:43:14 32 4
gpt4 key购买 nike

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

最佳答案

如果您希望字符串在大于列宽时被截断,那么您可以为字符串格式规范添加一个精度:

printf("TXT1: %9.9s TXT2 %9.9s TXT3 %9.9s\n", txt1, txt2, txt3);

使用 printf(),您的示例程序的输出如下所示:

TXT1:         a TXT2 bbbbbbbee TXT3         e
TXT1: aaaaaaaa TXT2 bbbbbbbbb TXT3 abcde

关于c - 使用 printf 格式在 C 中打印等宽列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17751826/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com