我是C的新手,我正在试图弄清楚如何创建单独的字符串(char []),这些字符串由char []和ints组合而成,长度排列 -
例如,如果我有char []名字,char []姓氏和int age我需要它们全部在1行上相同长度的例子 -
乔|史密斯| 45
艾米| Footh | 2
每行都是自己的char []并排队。
这是我到目前为止的代码 -
while(temp != NULL)
{
char listLine[IDLEN + FOODNAMELEN + DESCLEN + 10];
char * id = temp->data->id;
char * name = temp->data->name;
int dollars = temp->data->price.dollars;
int cents = temp->data->price.cents;
sprintf(listLine,"%s |%s |$%d.%d\n", id, name, dollars, cents);
printf("%s",listLine);
temp = temp->next;
}
这个工作正常,但我似乎无法排列|彼此。
我仍然是堆叠交换的新手,所以我不确定如何标记作业...但是这是作业。
任何帮助都会很棒。
由于
答案 0 :(得分:1)
您可以将宽度说明符与printf
格式说明符一起使用。
示例:
printf("%3d | %10s", 32, "Hello");
将打印
_32 | _____你好
其中_
(下划线)代表空格
您还可以使用printf("%*d", width, 32);
将宽度指定为参数。 width
可以通过打印的字符串长度来确定。字符串的最大长度可以是您想要的宽度。对于数字,您可以假设没有数字(32位数字)将大于10位数(2 32 有10位十进制表示法)
请参阅this
答案 1 :(得分:0)
如果您尝试将这些字符排在管道字符('|')上,那么您可以首先传递数据以确定字符中每个字段的最大长度,然后在第二遍中, space-pad每个字段都比它的最大值短,这样当所有字段都被格式化后,每个字段的长度都完全相同。
或者,您可以确定每个字段所需的最大长度,然后使用printf()语句格式化这些字段。
答案 2 :(得分:0)
听起来像是你想要添加标签?您可以通过添加\ t
来添加标签"%s \t|%s \t|$%d.%d\n"