WCH沁恒单片机
直播中

陈飞

8年用户 1249经验值
私信 关注
[问答]

ch573 sprintf函数不能将float型数据存入char型数组中是为什么?

我在使用时,sprintf可以将整形数据存入char型数组中,但是不能将float型数据存入char型数组中,请问这是为什么。
void _ShowData_Change_S(uint16_t x,uint16_t y,uint8_t num,uint16_t fc,uint16_t bc,void *p)
{
    char Fiv[5],One[1];
    float *f;
    uint8_t *u8;
    int *it;

    if(num <= 2)
        u8 = (uint8_t*)p;
    else if(num > 4)
        f = (float*)p;

    switch(num)
    {
        case 1:
            sprintf(One,"%01c",*u8);
            TFT_ShowNumPic_S(x,y,One,fc,bc);
        break;
        
        case 51:
            sprintf(Fiv,"%05.1f",*f);
            TFT_ShowNumPic_S(x,y,Fiv,fc,bc);
        break;
    }
}

这是一个显示函数,如果void *p传入的是整形数据可以显示出来,但是float类型的数据就显示不出来
  
  

回帖(1)

李星星

2022-8-24 09:38:51
在MRS里面, wch 的risc-v工程的stdio实现默认是newlib-nano,为了减少代码占用,没有开启浮点打印之类的支持
要实现sprintf 浮点支持可以按照下面方法:
方法1,下图红色框打勾,蓝色不打勾(还是使用newlib-nano)
方法2,下面红色和蓝色框都不勾选(不使用newlib-nano)


举报

更多回帖

发帖
×
20
完善资料,
赚取积分