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

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

[复制链接]
  • 打卡等级:常住居民III
  • 打卡总天数:117
  • 最近打卡:2026-03-15 14:54:05

52

主题

51

回帖

760

积分

高级会员

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

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:647
  • 最近打卡:2026-03-25 13:05:21

33

主题

2918

回帖

6571

积分

论坛元老

积分
6571
发表于 2025-11-3 17:22:45 | 显示全部楼层
你程序怎么写的呢?
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:487
  • 最近打卡:2026-03-27 08:57:04
已绑定手机

104

主题

4202

回帖

9329

积分

荣誉版主

无情的代码机器

积分
9329
发表于 2025-11-3 17:58:54 | 显示全部楼层
你程序怎么写的呢?

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

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:117
  • 最近打卡:2026-03-15 14:54:05

52

主题

51

回帖

760

积分

高级会员

积分
760
发表于 2025-11-3 18:26:51 | 显示全部楼层
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  详情 回复 发表于 2025-11-3 18:47
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:487
  • 最近打卡:2026-03-27 08:57:04
已绑定手机

104

主题

4202

回帖

9329

积分

荣誉版主

无情的代码机器

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

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

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

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:117
  • 最近打卡:2026-03-15 14:54:05

52

主题

51

回帖

760

积分

高级会员

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

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

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

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-3-27 14:30 , Processed in 0.108117 second(s), 75 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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