在 C 语言中对齐 printf 语句

Aligning printf statements in C

提问人:user22712878 提问时间:11/15/2023 更新时间:11/15/2023 访问量:49

问:

我有一些价值观想向左对齐。但是,两个数字 2400 和 2500 有额外的偏移量,我假设这是因为导致它的 key.name 更长。我能做些什么来正确对齐这些值?我是否缺少其他对齐方法?

我的代码

void print_key(Key key) {
    char c = ' ';
    printf("%-5d%-15s%-40c",key.num, key.name,c);
}

// Input: ’node’: a node
// Effect: node.key is printed and then the node.data is printed
void print_node(Node node) {
    print_key(node.key);
    printf("%d\n", node.data);
}

输出

C 字符串 对齐方式

评论

0赞 Retired Ninja 11/15/2023
使当前不适合的列变宽。在 printf 中设置可变文本列宽可能会有所帮助。循环访问所有数据,查找每列中最长的项目,并适当地动态调整其大小。
1赞 Craig Estey 11/15/2023
The TL;DR:更改为(例如)长度超过 15 个字符。15s25sBeechmount Crescent
1赞 user22712878 11/15/2023
@Retired忍者啊,谢谢!
1赞 user22712878 11/15/2023
@Craig Estey,谢谢!可变文本列宽和仅设置更多空间都可以。
1赞 Andreas Wenzel 11/15/2023
40 个字符的第三列(不可见)有什么意义?为什么不简单地通过将其与第二列合并来摆脱它呢?这样,第二列将足够大,可以打印所有名称。printf("%-5d%-55s",key.num, key.name);

答: 暂无答案