是否还有其他方法可以在左对齐中打印名称,在文档中以右对齐方式打印数字而不使用c语言中的printf("%10d")
?
答案 0 :(得分:0)
这个怎么样?
void print_uint32_right_justify(uint32_t num, int width) {
char b[width + 2];
char *p = b + width + 1;
*(p--) = 0;
if(!num)
*(p--) = '0';
while(num > 0) {
*(p--) = '0' + num % 10;
num /= 10;
}
while(p > b)
*(p--) = ' ';
write(1, b + 1, width);
}
答案 1 :(得分:0)
您还可以使用*
的{{1}}宽度说明符。
printf
如果你想要整数,你可以将const int length = 20;
char aligned_left[length];
char aligned_right[length];
char *text = "text";
int padding_count = length - strnlen(text, length) - 1;
snprintf(aligned_right, length, "%*s%s", padding_count, "", text);
snprintf(aligned_left, length, "%s%*s", text, padding_count, "");
替换为%s
(但你必须适当地计算整数的长度)或%d
将int改为snprintf
char *text
1}}这里。