将串口接收到的字符串转化为数值(包含小数)

串口接收到的一般都为字符串,常见的函数sscanf()只能转化整数型字符串,对于浮点型字符串则不行。
该函数实现将浮点型字符串转化为相应的数值(整数,浮点数据均可)

float SPRTODATA(u8 *p) //将字符串转化为数据(包含小数)
{
    u16 i=0,j=0,t=0;
    double temp=0;
    for(i=0;iif(p[i]=='.') //判断小数点存在的位置
        {
            t=1;  //小数点存在标志
            j=i;  //记下小数点存在的位置
        }
        else
        {
            if(t) //如果在小数点后面
            {
                temp=(double)(p[i]-'0')/pow(10,(i-j))+temp; //改为小数
            }
            else //在小数点前面
            {
                temp=(double)(p[i]-'0')+temp*10; 
            }
        }
    }
    return temp;
}

你可能感兴趣的:(嵌入式开发,C)