使用atof()将一组字符转换为浮点数

时间:2016-01-11 05:05:27

标签: c atof

如何将所有4个字符转换为浮点数?我只能将第一个字符转换为整数。你能在解释中给我一些例子吗?谢谢

这是我到目前为止所尝试过的。

void use_atof()
{

        char c[200];
        float val, v;

        strcpy(c ,"23.56,55.697,47.38,87.68");
        val = atof(c);
        printf("%f\n", val);
}

1 个答案:

答案 0 :(得分:3)

您需要分离输入并在每个值上调用atof()。

以下是使用strtok执行此操作的简单方法。请注意,它确实会破坏输入数据(添加NULL' s),因此如果它不可接受,您需要复制它或找到其他方式(例如,使用strchr())。

void use_atof()
{

    char c[200];
    float val, v;
    char *ptr;

    strcpy(c ,"23.56,55.697,47.38,87.68");
    ptr = strtok(c,",");
    while (ptr) {
        val = atof(ptr);
        printf("%f\n", val);
        ptr = strtok(NULL,",");
    }
}

编辑:

每个请求,一个完整的程序(在Linux上测试):

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void use_atof(void);

int main()
{
    use_atof();
    exit (0);
}


void use_atof()
{

    char c[200];
    float val, v;
    char *ptr;

    strcpy(c ,"23.56,55.697,47.38,87.68");
    ptr = strtok(c,",");
    while (ptr) {
        val = atof(ptr);
        printf("%f\n", val);
        ptr = strtok(NULL,",");
    }
}