gpt4 book ai didi

c - 如何将用空格填充的数字以固定宽度居中?

转载 作者:行者123 更新时间:2023-12-01 16:26:29 25 4
gpt4 key购买 nike

我正在尝试做这样的事情

aligned numbers

但我想不出对通用数字执行此操作的方法。看,我得到了数字可以容纳的最大空间(在本例中,长度是 4)。但其中的数字可以具有小于或等于(空格 - 2)的任何长度,因此它可以在不接触边框的情况下适合。我需要将每个方 block 中的数字居中,无论它有多少个字符。

我在第一行尝试了这样的操作:

printf("    ");
for (i = 0; i < columns; i++) {
printf(" ");
printf("%*d", length, i);
printf(" ");
}

但它不会将数字对齐在中心,而是对齐在右侧。我该怎么办?

最佳答案

应该做类似的事情(检查错误):

#include <stdio.h>
#include <assert.h>

#define BUFSIZE 20

void print_centered(size_t width, int num) {
char buffer[BUFSIZE];
int len;
int padding_left, padding_right;

assert(width < BUFSIZE);

len = snprintf(buffer, BUFSIZE, "%d", num);
padding_left = (width - len) / 2;
padding_right = width - len - padding_left;

(void)snprintf(buffer, BUFSIZE, "%*d%*s", len + padding_left, num, padding_right, padding_right ? " " : "");
printf("%s", buffer);
}

int main(int argc, char **argv) {
printf("|");
print_centered(10, 123);
printf("|\n");

printf("|");
print_centered(10, 1234);
printf("|\n");

printf("|");
print_centered(10, 1234567890);
printf("|\n");

return 0;
}

输出:

|   123    |
| 1234 |
|1234567890|

关于c - 如何将用空格填充的数字以固定宽度居中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24004812/

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