找回密码
 立即注册
查看: 57|回复: 5

如何解决sprintf语句转换字符前面有一个空格

[复制链接]
  • 打卡等级:常住居民I
  • 打卡总天数:74
  • 最近打卡:2025-11-06 19:22:32

18

主题

39

回帖

508

积分

高级会员

积分
508
发表于 4 天前 | 显示全部楼层 |阅读模式
我在用sprintf语句转换时输出的字符显示时总是有一位空格,使得本来三位数字,但必须使用4位来显示,前面总是有个空格,请教高手如何去掉前面的空格?
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:555
  • 最近打卡:2025-11-07 09:20:08

33

主题

2656

回帖

5912

积分

论坛元老

积分
5912
发表于 4 天前 | 显示全部楼层
你程序怎么写的呢?
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:351
  • 最近打卡:2025-11-07 08:53:58
已绑定手机

91

主题

3387

回帖

7616

积分

荣誉版主

无情的代码机器

积分
7616
发表于 4 天前 | 显示全部楼层
你程序怎么写的呢?

截图202511031802262817.jpg
三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:74
  • 最近打卡:2025-11-06 19:22:32

18

主题

39

回帖

508

积分

高级会员

积分
508
发表于 4 天前 | 显示全部楼层
erci*** 发表于 2025-11-3 17:58
你程序怎么写的呢?

char S[10];                                         //显示缓存
u8 bmq,bmq1,S1;

if(bmq1!=bmq)
{
   bmq1=bmq;
  sprintf(S,"%4d",bmq);
  LCD_A24(100,30,S,15,0,4);     //显示12*24字符串       
}

/*===================================================================================================
** 在单色LCD液晶显示屏显示24*16点阵数字串函数
** 调用参数: X列Y行坐标, * str串指针, Fcolor字前景色,Bcolor字背景色,约定:色号80为透明,Len指定长度
=====================================================================================================*/
void LCD_A24(u16 X,u16 Y, char *str,u8 Fcolor,u8 Bcolor,u8 Len)
{  /* X(0-319) Y(0-479) */
  unsigned char n,C;
  unsigned int i,j,L,Lw=0,ZM;
  L=Len;                             //strlen(str);
  for(j=0;j<L;j++)
  { C=str[j];                        /* 逐个显示字符串 */
    for(i=0;i<24;i++)
    { /* 写24行 */
      ZM=ASC24[C-32][i*2];           /* 取字模码1 */
      ZM=ZM*256+ASC24[C-32][i*2+1];  /* 取字模码2 */
      LCD_MoveTo(X+Lw,Y+i);          /* 定位左上角 */
      for(n=0;n<12;n++)
      { if((ZM&0x8000)==0x8000)LCD_DATA(COLOR[Fcolor]);/* 字模点为1显示前景色 */
        else                                           /* 字模点为0显示原底色或背景色 */
        { if(Bcolor==80) { LCD_MoveTo(X+Lw+n,Y+i); }   /* 透明显示模式: 仅地址+1定位 */
           else LCD_DATA(COLOR[Bcolor]);               /* 正常显示模式:背景色 */
        }
        ZM = ZM << 1;
      }         /* 水平16点显示完毕 */
    } Lw=Lw+12; /* 水平坐标位移 */
  }             /* 一位数字显示完毕  */
}

LCD_A24这个函数最后的数字3既显示三位时,显示出来是“空格+百位+十位”个位就显示不出来

点评

显示三位sprintf(S,"%4d",bmq); 为什么要用4d呢?自动添加了空格补齐四位,如不需要占位符直接%d  详情 回复 发表于 4 天前
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:351
  • 最近打卡:2025-11-07 08:53:58
已绑定手机

91

主题

3387

回帖

7616

积分

荣誉版主

无情的代码机器

积分
7616
发表于 4 天前 | 显示全部楼层
dong*** 发表于 2025-11-3 18:26
char S[10];                                         //显示缓存
u8 bmq,bmq1,S1;

显示三位sprintf(S,"%4d",bmq);

为什么要用4d呢?自动添加了空格补齐四位,如不需要占位符直接%d
三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:74
  • 最近打卡:2025-11-06 19:22:32

18

主题

39

回帖

508

积分

高级会员

积分
508
发表于 4 天前 | 显示全部楼层
erci*** 发表于 2025-11-3 18:47
显示三位sprintf(S,"%4d",bmq);

为什么要用4d呢?自动添加了空格补齐四位,如不需要占位符直接%d

非常谢谢,我忽略了,
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-11-7 11:16 , Processed in 0.124883 second(s), 82 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表