c - 消除前导零,同时仍保持正确对齐
问题描述
我希望能够从输出中删除数字 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\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
推荐阅读
- nlp - 如何在没有 IOB 标签的情况下使用 Hugging Face 的转换器管道重建文本实体?
- php - 文件编译成功,但更改不会反映在控制台中
- angular - Angular 9 在组件之间共享 HTML
- php - 如何在 PHP 中获取主机名?
- javascript - 画布将图像拆分为 rgba 组件
- java - 一个真值被返回给调用者,即使没有在 return 语句中指定任何返回值
- javascript - 在该月的最后一天减去 1 个月的奇怪行为
- css - 使用 bulma 框架时如何修改填充、边距和其他 css 属性?
- rest - 未处理的异常:类型“int”不是类型转换中“String”类型的子类型
- java - 使用全局变量反转二叉树时出现stackoverflow错误