c - C printf:有没有办法在变量之后和间距之前添加文本?
问题描述
我想使用 printf 创建这样的输出:
Name Available Required
------------- ----------------- ---------------
Something 10.1 GiB 2.3 GiB
但是使用内置的间距机制不允许在变量之后、空格之前添加测量文本(即 Gb)。问题是该文本需要包含在间距中。我努力了
"%-12.1f GiB"
在间距之后放置“GiB”。
解决方案
该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。千兆就是千兆。
推荐阅读
- amazon-web-services - Terraform aws_instance - 更改 volume_size
- c++ - libcurl FTP-在虚幻引擎中下载不完整
- javascript - Laravel 8:使用 ajax 上传文件
- c# - 使用 HotChocolate 动态选择模式 - GraphQL
- concurrency - RxJava:当“可观察合同”说“发生在之前”时,它实际上是什么意思?
- google-apps-script - 线程的最近电子邮件 - Gmail
- python-3.9 - 尝试提取包含括号之间的字符串的行
- typescript - 如何在 TypeScript 中为具有不同键的对象声明类型
- kotlin - Gradle 惰性执行任务配置
- python - python playwright中的打印页面源