在保持正确对齐的同时消除前导零

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在保持正确对齐的同时消除前导零相关的知识,希望对你有一定的参考价值。

我希望能够从数字0-9的输出中删除前导零,但是如果数字有2位数,我仍然保持对齐。 假设我有dms格式的经度:1134510W

我想添加另一个坐标,比如:1450309N 如何使其符合格式:

113d 45m 10d West  
145d  3m  9d North

我正在使用fscanf(buf, "%3s%2s%2s%s",d,m,s,c)来阅读它 sprintf(buf, "%3sd %2sm %2ss %4s",d,m,s,c)存储它。我尝试将sprintf m和s宽度说明符更改为1,但它没有正确对齐。

答案

这个怎么样?

#include <stdio.h>

char* trim(char* c)
{
    while (*c=='0') c++;
    return c;
}

int main(void) {
    char* d="113";
    char* m="45";
    char* s="10";
    char* c= "West";
    printf("%3sd %2sm %2ss %4s
",d,m,s,c);

    d="145";
    m="03";
    s="09";
    c= "North";
    printf("%3sd %2sm %2ss %4s",trim(d),trim(m),trim(s),c);
    return 0;
}

没有trim函数的输出:

Success #stdin #stdout 0s 9424KB
113d 45m 10s West
145d 03m 09s North

使用trim函数输出:

Success #stdin #stdout 0s 9424KB
113d 45m 10s West
145d  3m  9s North

以上是关于在保持正确对齐的同时消除前导零的主要内容,如果未能解决你的问题,请参考以下文章

在 Java 中,如何将字节数组转换为十六进制数字字符串,同时保持前导零? [复制]

PHP在数字中添加千位分隔符并保持前导零

使用 Pandas 读取 CSV 时如何在列中保持前导零?

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

在C中保持前导零[重复]

如何在熊猫列后期操作中保持前导零?