C 如何格式化动态输出以在printf中创建表
我有一个大的printf,它填充了一个文件C 如何格式化动态输出以在printf中创建表,c,format,printf,C,Format,Printf,我有一个大的printf,它填充了一个文件 printf("\n%s \t\t%s \t\t%s \t%s \t%s \t%s \t%s \t%s \t%s \t%s \t%s\n", instante, territorio, blancos, nulos, subscritos,elegidos,porcentaje, validos, votos, hondt, estimados); 我需要格式化对齐标准输出,因为现在是这样的: printf支持填充。您应该将每一列的左边或右边填充到
printf("\n%s \t\t%s \t\t%s \t%s \t%s \t%s \t%s \t%s \t%s \t%s \t%s\n", instante, territorio, blancos, nulos, subscritos,elegidos,porcentaje, validos, votos, hondt, estimados);
我需要格式化对齐标准输出,因为现在是这样的:
printf支持填充。您应该将每一列的左边或右边填充到一个固定的大小
print("%-10s", 'test')
您可以指定应使用多少个字符,其余字符将用空格填充,例如,
%20s
将为您提供20个字符,或者%-20s
如果您希望在右侧填充字符
#include <stdio.h>
int main() {
char *items[] = { "First", "Second one", "Third" };
char *clients[] = { "Jon Doe", "Carol Anne", "Roscoe Williams" };
printf("%-20s\t%-20s\n", "Item", "Client");
for (int i = 0; i < 3; i++)
printf("%-20s\t%-20s\n", items[i], clients[i]);
}
#包括
int main(){
字符*项[]={“第一”、“第二”、“第三”};
char*客户[]={“Jon Doe”、“Carol Anne”、“Roscoe Williams”};
printf(“%-20s\t%-20s\n”、“项目”、“客户”);
对于(int i=0;i<3;i++)
printf(“%-20s\t%-20s\n”,项目[i],客户[i]);
}
它工作得很好,但不是100%动态的。如何使用一个变量来定义应该使用的字符数,其余的将用空格填充?int l=23代码>是所需的字符数。然后你有了你的格式charfmt[10]代码>,根据需要调整大小。创建一个格式字符串,如sprintf(fmt,%%-%ds),l)
并像printf(fmt,someString)一样使用它代码>。对于上面的例子,它将是:charfmt[15];sprintf(fmt,“%%-%ds\t%%-%ds\n”,l,l);printf(fmt,项目[i],客户[i])代码>当然,为了安全起见,您应该使用snprintf。