【发布时间】:2021-12-26 05:57:15
【问题描述】:
我的代码中有以下打印内容
printf("%-*s %s", 20, "string1", "string2");
printf("%-*s %s", 20, "\tstring3", "string4");
我希望它打印以下内容:
string1 string2
string3 string4
但在某些操作系统(例如 Ubuntu 16)上,我得到以下内容
string1 string2
string3 string4
我到处搜索,但找不到解决方法,我认为 %-*s 应该解决了我的对齐问题,但它没有
【问题讨论】:
-
请提供完整的代码minimal reproducible example。
-
此代码在一行上打印四个字符串。目前尚不清楚为什么您期望有两行输出。
-
我建议不要使用制表符来格式化输出。
-
制表符通常比处理带有空格的输出需要更多的工作,并且制表符宽度不是保证的事情。与列中的其他项目相比,超过制表符宽度的一个输出将导致您的列在发生这种情况的每一行上不对齐。另一方面,空格只是阻止记帐任务,但在每个终端上都是一致的。