如何将值与前导零或一般对齐?

Posted

技术标签:

【中文标题】如何将值与前导零或一般对齐?【英文标题】:How can I align a value with leading zero or in general? 【发布时间】:2021-12-05 18:12:13 【问题描述】:

首先我只想说我是编程的初学者,因此我看到的许多问题的解决方案都太复杂了,我无法理解。 我的任务是编写一个程序,该程序将使用 dd-mm-yyyy 格式的 scanf 函数获取日期,并在如下列中使用 printf 显示它:

Day:     dd
Month:   mm
Year:  yyyy

我通过在 %d 中添加 '02' 或 '04' 解决了 0 的问题。然而,主要的问题是日期需要与数字对齐显示在右边。我的代码如下所示:

int a,b,c;
printf("Enter the date\n");
scanf("%2d-%2d-%4d", &a, &b, &c);
printf("Day: %02d \nMonth: %02d \nYear: %04d" ,a,b,c);
return 0;

而且我不知道如何对齐这些数字,因为我看到为了做到这一点,您必须在 %d 中没有数字,这是有问题的。该任务说我不能使用空间、循环、开关、if 并且必须使用一个 scanf 和两个 printf 来完成。我将永远感谢任何能帮助我解决这个问题或至少给我一个线索的人我应该怎么做,因为我别无选择。

【问题讨论】:

只需在格式字符串中放置空格即可。我不知道这个作业想教给你什么。 @Cheatah 我必须上传代码的系统会检测我是否使用了空格并自动拒绝我的工作。 【参考方案1】:

像这样:

printf("%-9s%02d\n%-9s%02d\n%-7s%04d\n", "Day:", a, "Month:", b, "Year:", c);

我在每个 \n 换行符之前删除了您不必要的(和错误的)空格,并添加了最后一个换行符。

%-9s 将字符串的左侧格式设置为总宽度为 9 的空格。%02dint 正确格式化为零,总宽度为 2。

您可以阅读有关format specifiers 的信息。有很多细节需要考虑。

【讨论】:

是的,就是这样!非常感谢,我连这行都能看懂了。 请通过“接受”这个答案表示感谢。我可以建议您使用tour吗?

以上是关于如何将值与前导零或一般对齐?的主要内容,如果未能解决你的问题,请参考以下文章

sql 如何将值与SQL进行比较?

如何将值与空气日期时间选择器 Jquery 插件与模型绑定?

如何在猪拉丁语脚本中没有前导零时将值转换为 hhmm 格式

SwiftUI 如何将视图的前导对齐到最超级视图的前导?

将值与 C# 中的子类关联

SQL WHERE 子句将值与尾随空格匹配