gpt4 book ai didi

c - printf 与 C 中的制表符对齐

转载 作者:行者123 更新时间:2023-12-02 18:27:19 31 4
gpt4 key购买 nike

我的代码中有以下打印内容

printf("%-*s %s", 20, "string1", "string2");
printf("%-*s %s", 20, "\tstring3", "string4");

我希望它打印以下内容:

string1              string2
string3 string4

但在某些操作系统(例如 Ubuntu 16)上我得到以下信息

string1              string2
string3 string4

我到处搜索,找不到解决这个问题的方法,我认为 %-*s 应该已经解决了我的对齐问题,但事实并非如此

最佳答案

TAB 仍然是 1 个字符。它被打印为 1 个字符。然后由终端决定用它做任何它想做的事情。

这意味着,printf("%-20s", "\tstring3");将打印 1 个 TAB 字符、7 个普通字符,然后打印 12 个空格,得到 20。

你需要重新思考你想做什么。一种方法是创建一个函数,该函数接收带有制表符的字符串,并返回一个已扩展为空格的字符串。如果 TAB 始终位于字符串的开头,那么您可以将 TAB 替换为 8 个(或您需要的任意数量)空格。如果您需要实际的制表符停止位,则需要更多的逻辑来将它们扩展为适当数量的空格。

关于c - printf 与 C 中的制表符对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69967417/

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