Превращение группы символов в 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,",");
}
}