Выходной форматированный стол с fprintf - PullRequest
1 голос
/ 02 мая 2020

Есть ли простой способ отформатировать эту таблицу?

Я читаю текстовый файл, используя структуру. Но при печати на экране это не организовано.

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

Output

Я хочу такой вывод


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 

1 Ответ

2 голосов
/ 02 мая 2020

Вы можете использовать форматированный спецификатор, как, например, %20s будет использовать 20 символов независимо от того, будет ли размер строки меньше, это будет выровнено по правому краю, для выравнивания по левому краю вы можете использовать %-20s:

Live демо

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);  

Будет выводить:

No.       Name                        ID        #1        #2

1         random_name             123456         2         5
2         other_random_name         1223         2         5
3         yet_another_name       3456980         2         5
...