我希望能够从数字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,但是它没有正确对齐。
答案 0 :(得分: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\n",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