在 C 中通过混合 char[] 和 int 创建字符串

标签 c string formatting scanf

我是 C 新手,我试图弄清楚如何创建由按长度排列的 char[] 和整数混合组成的单独字符串 (char[]) -

例如,如果我有 char[] 名字、char[] 姓氏和 int 年龄,我需要将它们全部放在 1 行相同长度的示例中 -

乔 |史密斯 |45
艾米|脚|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;
}

这工作正常,但我似乎无法排列 |彼此之间。

我对堆栈交换还是新手,所以我不确定如何标记为作业...但是是的,这是作业。

任何帮助都会很棒。

谢谢

最佳答案

您可以将宽度说明符与printf一起使用格式说明符。

示例:

printf("%3d | %10s", 32, "Hello");

将打印

_32 | _____你好

哪里_ (下划线)代表空格

您还可以使用 printf("%*d", width, 32); 将宽度指定为参数。 width可以由您正在打印的字符串的长度确定。字符串的最大长度可以是您想要的宽度。对于数字,您可以假设任何数字(32 位数字)都不会超过 10 位(232 以十进制表示有 10 位数字)

参见this

关于在 C 中通过混合 char[] 和 int 创建字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23880810/

相关文章:

java - 在 Java 中处理带有特殊字符的字符串

java - 循环后如何将这些单词构建为一个句子?

python - 将列表转换为由双引号组成并以逗号分隔的单个字符串

c - 在堆栈 ADT 中声明各种类型定义

c - 算法复杂度与运行时间

java - 编写代码以仅使用一次 isSubstring 调用来检查 s2 是否是 s1 的旋转

java - 打印格式

c# - Visual Studio 2015 花括号格式 : If, Else If, Else

c - 使用 free() 函数

c - 基本 Malloc/免费