gpt4 book ai didi

c - 如何连接字符串以生成固定宽度的输出

转载 作者:太空宇宙 更新时间:2023-11-04 08:14:15 25 4
gpt4 key购买 nike

我有一个结构数组,其中每个结构都包含一个名字和一个姓氏,以及其他信息。我正在尝试以表格形式打印数组,类似这样

+---------------------------+--------+--------+
| Student Name | Test 1 | Test 2 |
+---------------------------+--------+--------+
| Pousseur, Henri | 95 | 92 |
| Boyer, Charles | 90 | 97 |
+---------------------------+--------+--------+

但是,我的输出是这样的

+---------------------------+--------+--------+
| Student Name | Test 1 | Test 2 |
+---------------------------+--------+--------+
| Pousseur, Henri | 95 | 92 |
| Boyer, Charles | 90 | 97 |
+---------------------------+--------+--------+

我的问题是,如何将姓氏连接到名字(中间用逗号),然后将整个内容打印为固定宽度的字符串?以便我的表格正确排列。

这是我的代码:

#include <stdio.h>
#define NAME_LEN 25

typedef struct
{
char fname[NAME_LEN+1];
char lname[NAME_LEN+1];
int score1;
int score2;
} STUREC;

void printRecords(STUREC records[], int count)
{
printf("+---------------------------+--------+--------+\n");
printf("| Student Name | Test 1 | Test 2 |\n");
printf("+---------------------------+--------+--------+\n");

for (int i = 0; i < count; i++)
printf ("| %-s, %-26s| %4d | %4d |\n", records[i].lname, records[i].fname, records[i].score1, records[i].score2 );

printf("+---------------------------+--------+--------+\n");
}

int main(void)
{
STUREC records[] = {
{ "Henri" , "Pousseur", 95, 92 },
{ "Charles", "Boyer" , 90, 97 }
};

printRecords(records, 2);
}

最佳答案

请注意,printf 返回打印的字符数。所以如果想在固定宽度内打印名字,可以先打印名字,然后根据需要输出空格来填满宽度。

#define WIDTH 26

int count = printf( "%s, %s", records[i].lname, records[i].fname );
if ( count < WIDTH )
printf( "%*s", WIDTH-count, "" );

在格式字符串 "%*s" 中,* 告诉 printf 字符串的宽度将作为参数传递。 WIDTH-count 参数是需要打印的空格数,"" 只是一个空字符串。例如,如果 count 为 16,则 WIDTH-count 为 10,因此 printf 等同于

printf( "%10s", "" ); 

这将打印 10 个空格。

关于c - 如何连接字符串以生成固定宽度的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36732361/

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