如何解决sprintf语句转换字符前面有一个空格
我在用sprintf语句转换时输出的字符显示时总是有一位空格,使得本来三位数字,但必须使用4位来显示,前面总是有个空格,请教高手如何去掉前面的空格?你程序怎么写的呢? 你程序怎么写的呢?
ercircle 发表于 2025-11-3 17:58
你程序怎么写的呢?
char S; //显示缓存
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; /* 逐个显示字符串 */
for(i=0;i<24;i++)
{ /* 写24行 */
ZM=ASC24; /* 取字模码1 */
ZM=ZM*256+ASC24;/* 取字模码2 */
LCD_MoveTo(X+Lw,Y+i); /* 定位左上角 */
for(n=0;n<12;n++)
{ if((ZM&0x8000)==0x8000)LCD_DATA(COLOR);/* 字模点为1显示前景色 */
else /* 字模点为0显示原底色或背景色 */
{ if(Bcolor==80) { LCD_MoveTo(X+Lw+n,Y+i); } /* 透明显示模式: 仅地址+1定位 */
else LCD_DATA(COLOR); /* 正常显示模式:背景色 */
}
ZM = ZM << 1;
} /* 水平16点显示完毕 */
} Lw=Lw+12; /* 水平坐标位移 */
} /* 一位数字显示完毕*/
}
LCD_A24这个函数最后的数字3既显示三位时,显示出来是“空格+百位+十位”个位就显示不出来 dongfang 发表于 2025-11-3 18:26
char S; //显示缓存
u8 bmq,bmq1,S1;
显示三位sprintf(S,"%4d",bmq);
为什么要用4d呢?自动添加了空格补齐四位,如不需要占位符直接%d
ercircle 发表于 2025-11-3 18:47
显示三位sprintf(S,"%4d",bmq);
为什么要用4d呢?自动添加了空格补齐四位,如不需要占位符直接%d
非常谢谢,我忽略了,
页:
[1]