c - 如何在printf中填充两个字符串?
问题描述
例如:
printf("%-10s%s\n", s1, s2);
我可以得到:
s1 s2
当较早的字符串可能具有不同的长度时,我希望将 s3 放在固定列
printf("%s%s%s\n", s1, s2, s3); // how to padding 10?
s1s2 s3
s11s22 s3
s111s222 s3
解决方案
您将不得不使用一些逻辑来计算要打印多少空间,例如:
int s3_column = 15; // example position
int length = printf("[%s%s]", s1, s2);
if ( length >= 0 && length < s3_column )
printf("%*s", (int)(s3_column - length), "");
printf("%s\n", s3);
正如评论中所建议的,另一种可能的方法是[s1s2]
在自己的缓冲区中准备部件,但这需要额外的内存并引发与内存分配相关的所有潜在问题,并且最终将成为比计算空间更复杂的代码,如我例子。
推荐阅读
- electron - 使用 Electron 时在路径中显示带有空格的图像(Windows)
- java - jolokia:无法执行带参数的命令
- mysql - 以角度读取节点表达的响应
- excel - 如何在云excel_E1办公包上运行数组公式
- go - 带有 websockets 和 redis 的多房间聊天应用程序
- python - pyodbc,一步创建并插入红移表的方法
- git - git 命令 - checkout 和 switch 之间的区别
- visual-studio-2019 - 将 Platform Toolset 从 v120 升级到 v142 时的编译问题(visualstudio 2019)
- visual-studio - Visual Studio 2019 DSL 工具箱(Microsoft Corporation .Net 组件的 4.0.0.0 版)
- google-apps-script - 选择随机单元格,忽略空单元格