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