C 使用fprintf输出格式化的表

C 使用fprintf输出格式化的表,c,formatting,printf,C,Formatting,Printf,有没有什么简单的方法来设置表格的格式 我正在使用一个结构读取一个txt文件。但在屏幕上打印时,它没有组织 fprintf(stdout,"%d.\t'%s'\t%d\t%d\t%d\n",read.serial,read.name,read.roll,read.day1,read.day2); 我想要这种输出 No. Name ID #1 #2 1. Sajjad Kashem

有没有什么简单的方法来设置表格的格式

我正在使用一个结构读取一个txt文件。但在屏幕上打印时,它没有组织

fprintf(stdout,"%d.\t'%s'\t%d\t%d\t%d\n",read.serial,read.name,read.roll,read.day1,read.day2);

我想要这种输出


No.  Name                              ID        #1 #2
1.  Sajjad Kashem                   1330273      0  1 
2.  Hafizul Karim                   1420595      1  1 
3.  Afsana Rahman                   1430458      1  1 
4.  Md. Yousuf Hosain               1510295      0  0 
5.  Md. Farhanuzzaman Reza Famous   1510303      1  0 
6.  Md. Minul Islam Talukdar        1510678      0  1 


您可以使用格式化说明符,例如
%20s
将使用20个字符,无论字符串的大小是否较小,这将向右对齐,要向左对齐,您可以使用
%20s

将输出:

编号名称ID#1#2
1随机名称123456 2 5
2其他随机名称1223 2 5
还有另一个名字3456980 2 5

请显示您提到的代码的一部分。另外,请解释你的实际问题是什么。最明显的方法是确定每列所需的宽度,然后相应地填充每个条目。你在那个方法上哪里会被卡住?你所说的“当我在屏幕上打印它时,它并没有组织得更好”是什么意思?不比什么好?你期望/希望发生什么?请通过手动模拟来显示。您可以为字段指定固定宽度,而不是使用
\t
,如:
%10d
,这将在整数前面添加填充,这样总宽度为10个字符。还可以动态指定宽度:
%*d
,在这种情况下,您必须提供一个额外的整数参数来指定所需的宽度width@Yunnosch我编辑了我的帖子,你现在可以理解我想要什么了
fprintf(stdout,"%-10s%-20s%10s%10s%10s\n\n", "No.", "Name", "ID", "#1", "#2");
fprintf(stdout,"%-10d%-20s%10d%10d%10d\n", 1, "random_name", 123456, 2, 5);
fprintf(stdout,"%-10d%-20s%10d%10d%10d\n", 2, "other_random_name", 1223, 2, 5);
fprintf(stdout,"%-10d%-20s%10d%10d%10d\n", 1, "yet_another_name", 3456980, 2, 5);