Попробуйте функцию strtod:
char *end;
double num = strtod(arr, &end);
Конец будет указывать после последнего обработанного символа. Вы можете установить секунду на NULL
, если вам это безразлично. Или вы можете использовать atof
: atof(str)
эквивалентно strtod(str, (char **)NULL)
.
Но вам следует позаботиться, так как вы можете проверить, не искажен ли ввод:
if (*end != '\0')
// Handle malformed input