ch573 sprintf函数问题

我在使用时,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类型的数据就显示不出来

有没有大佬解答一下j_0065.gif


在MRS里面, wch 的risc-v工程的stdio实现默认是newlib-nano,为了减少代码占用,没有开启浮点打印之类的支持

要实现sprintf 浮点支持可以按照下面方法:

方法1,下图红色框打勾,蓝色不打勾(还是使用newlib-nano)

方法2,下面红色和蓝色框都不勾选(不使用newlib-nano)


image.png


只有登录才能回复,可以选择微信账号登录