C中是否有推荐的方式来标记我的输出,以便它实际上与数据对齐?我目前正在使用转义序列\ t,可以在下面查看。
#include <stdio.h>
int main()
{
int i;
int meatBalls[5] = {1, 2, 3, 4, 5};
printf("\tElement \t Address \t Value \n");
for(i=0; i < 5; i++) {
printf("meatBalls[%d] \t %p \t %d \n", i, &meatBalls[i], meatBalls[i]);
}
return 0;
}
这是我当前的输出,你可以看到标题没有对齐
Element Address Value
meatBalls[0] 0x7fff547d0640 1
meatBalls[1] 0x7fff547d0644 2
meatBalls[2] 0x7fff547d0648 3
meatBalls[3] 0x7fff547d064c 4
meatBalls[4] 0x7fff547d0650 5
答案 0 :(得分:3)
走向正确的方向:
#include <stdio.h>
int main(void)
{
int i;
int meatBalls[5] = {1, 2, 3, 4, 5};
printf("%12s %18s %6s\n", "Element", "Address", "Value");
for(i=0; i < 5; i++) {
printf("meatBalls[%d] \t %p \t %d \n", i, &meatBalls[i], meatBalls[i]);
}
return 0;
}
<强>输出强>
Element Address Value
meatBalls[0] 0x7fff60a1f700 1
meatBalls[1] 0x7fff60a1f704 2
meatBalls[2] 0x7fff60a1f708 3
meatBalls[3] 0x7fff60a1f70c 4
meatBalls[4] 0x7fff60a1f710 5
答案 1 :(得分:1)
最简单的方法可能就是更好地利用&#34; printf&#34;设置字段宽度......可能是这样的:
#include <stdio.h>
int main() {
int i;
int meatBalls[] = {1, 2, 3, 4, 5};
/-- 12 characters in "Element": 9 in "meatBalls", plus 3 in the subscript ("[#]")
| /-- 14 characters in an address
| | /-- unimportant, since @ end of line
printf("%-12s %-14s %s\n", "Element", "Address", "Value");
for(i=0; i < 5; i++) {
printf("meatBalls[%1d] %14p %d\n", i, &meatBalls[i], meatBalls[i]);
}
return 0;
}
请注意,您可能必须使用指针格式,因为指针是与平台相关的