左右对齐

时间:2015-08-24 06:58:19

标签: c

是否还有其他方法可以在左对齐中打印名称,在文档中以右对齐方式打印数字而不使用c语言中的printf("%10d")

2 个答案:

答案 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}}这里。

Run on ideone