Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何格式化动态输出以在printf中创建表_C_Format_Printf - Fatal编程技术网

C 如何格式化动态输出以在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,它填充了一个文件

 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。