gpt4 book ai didi

c - C 中列的可变长度

转载 作者:行者123 更新时间:2023-11-30 19:11:40 26 4
gpt4 key购买 nike

我正在尝试使用 2D int 数组在 C 中创建图形表。一切都很好,但问题是,如果整数的长度不同,表格看起来就不再好看了。这是一个例子:

[ 198 ] [  2  ] [34313]
[ 4 ] [ 54 ] [ 6 ]
[ 7 ] [ 888 ] [ 9 ]

不好

[198] [2] [34313]
[4] [54] [6]
[7] [888] [9]

我想出的是获取最大int的长度,然后使用%-Xd作为间距,但我不知道如何使用变量我的想法是用 %d 替换 X,即 printf("[%-%dd]", maxLength, mat[i][j]); 但我得到的只是 [%dd]。

有谁知道解决这个问题的方法吗?

最佳答案

有两个主要选项:

  1. 在运行时使用字符串中 X 的正确值创建格式字符串:

    char format[8];
    snprintf(format, sizeof(format), "%%%dd", width);
    printf(format, matrix[row][col]);
  2. 阅读printf()文档并在格式字符串中使用 * 来指示应从值读取宽度:

    printf("%*d", width, matrix[row][col]);

这两者都以最小宽度右对齐数字。如果该值太大而无法容纳,无论如何都会打印它,并根据需要使用额外的空间。

如果您想要零填充,可以在格式中添加 0 (%05d) 或使用精度 (%.5d) 或使用 %.*d。您可以使用 + 强制使用符号;您可以使用 - 等左对齐。

请注意,在确定最大宽度时,负数需要额外的减号空间,您需要分析最小值和最大值以确保有足够的空间。如果最大数为 9 而最小数为 -100,000,则使用最大数来确定宽度效果不佳。显然,如果您的值都是非负的,那么这不是问题。

关于c - C 中列的可变长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39437276/

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