Превращение группы символов в float с помощью 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 ответ

Вам нужно разделить ввод и вызвать atof () для каждого значения.

Ниже приведен простой способ сделать это с помощью strtok. обратите внимание, что он уничтожает входные данные (добавляет NULL), поэтому, если это неприемлемо, вам нужно скопировать их или найти другой способ (например, с помощью 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,",");
    }
}
Другие вопросы по тегам