我正在尝试使用2D int数组在C中创建图形表。这一切都很好,但问题是如果整数的长度不同,表格看起来不再好看了。这是一个例子:
好
$data = 'Your real data which you want to send in url ' ; than use in array .
不好
[ 198 ] [ 2 ] [34313]
[ 4 ] [ 54 ] [ 6 ]
[ 7 ] [ 888 ] [ 9 ]
我想出的是获得最大[198] [2] [34313]
[4] [54] [6]
[7] [888] [9]
的长度,然后使用int
作为间距,但我不知道如何在X的位置使用变量。我的我想是用%-Xd
替换X,即{{1}},但我得到的只是[%dd]。
有谁知道解决这个问题的方法?
答案 0 :(得分:1)
有两个主要选项:
在运行时使用字符串中X
的正确值创建格式字符串:
char format[8];
snprintf(format, sizeof(format), "%%%dd", width);
printf(format, matrix[row][col]);
阅读printf()
文档并在格式字符串中使用*
以指示应从值中读取宽度:
printf("%*d", width, matrix[row][col]);
这两个都以最小宽度右对齐数字。如果该值太大而不适合,则无论如何都会打印,必要时使用额外的空间。
如果您想要零填充,可以在格式(%05d
)中添加0或使用精度(%.5d
)或使用%.*d
。您可以使用+
强制标记;您可以使用-
等左对齐
请注意,在确定最大宽度时,负数需要额外的减号空间,您需要分析最小值和最大值以确保有足够的空间。如果最大数量为9且最小值为-100,000,则使用最大数量来确定宽度将无法正常工作。显然,如果您的值都是非负值,则这不是问题。