首页 > 解决方案 > 将具有十进制数的 char 数组转换为不同的浮点数

问题描述

您好,我对 C 编程相当陌生,我想转换一个看起来像的 char 数组

char numberlist[]="9,8 2,3 5,4 2,7 1,3";

到一个 9.8 的浮点数,我用过

float a;
 a=atof(numberlist);
printf("%.1f\n",a);

但这给了我 9.0 作为回报,因为它是 9,8 而不是 char 数组中的 9.8。我怎么能很容易地解决这个问题,而不接触 char 数组?提前致谢 :)

标签: c

解决方案


例如

char numberlist[]="9,8 2,3 5,4 2,7 1,3";

float convertFirstNumber(const char *str, char delim)
{
    char z[256];
    size_t index = 0;

    while(*str && *str != delim)
    {
        if(*str == ',') z[index++] = '.';
        else z[index++] = *str;
        str++;
    }
    z[index] = 0;
    return atof(z);
}

int main()
{
    printf("%.1f\n",convertFirstNuber(numberlist, ' '));
}

推荐阅读