首页 > 解决方案 > C printf:有没有办法在变量之后和间距之前添加文本?

问题描述

我想使用 printf 创建这样的输出:

Name          Available         Required
------------- ----------------- ---------------
Something     10.1 GiB          2.3 GiB

但是使用内置的间距机制不允许在变量之后、空格之前添加测量文本(即 Gb)。问题是该文本需要包含在间距中。我努力了

"%-12.1f GiB"

在间距之后放置“GiB”。

标签: cprintf

解决方案


printf功能不会一次性完成此操作。使用中间字符串。

double gigabytes_avail;
char buf[64];
snprintf(buf, sizeof(buf), "%.1f GB", gigabytes_avail);

printf("%-12s", buf);

如果您使用的是 Visual Studio 及其编译器,您可以考虑使用sprintf_s()而不是snprintf(). 它们不是同一个功能,但sprintf_s()适合这里。

或者,您可以自己进行填充,因为printf返回写入的字符数……</p>

int column_width = 15;
double gigabytes_avail;
// Does not handle errors, printf may return -1.
int r = printf("%.1f GB", gigabytes_avail);
for (; r < column_width; r++) {
    putchar(' ');
}

需要注意的是,千兆字节的符号是 GB,而不是 Gb。千兆就是千兆。


推荐阅读