double strtod(const char *start, char **end)
long double strtold(const char *start, char **end)
Функция strtodp конвертирует строковое представление числа, хранящееся в переменной start, в величину типа double и возвращает результат.
Функция strtod() работает следующим образом. Анализируется строка start и игнорируются все специальные символы (пробелы, символы табуляции и т.д.) в начале строки. Затем читаются символы, составляющие число. Процесс чтения останавливается, как только будет достигнут какой-то из символов, который не может входить в качестве части в число с плавающей запятой. Таким символом может служить пробел, знак пунктуации, отличный от точки, буква, отличная от «Е» и «е». Наконец, параметр end устанавливается так, чтобы он указывал на оставшуюся часть строки. Например, если функция strtod() вызвана с параметром 100.00 Pliers, то будет возвращена величина 100.00, а параметр end будет указывать на пробел перед словом «Pliers».
При возникновении ошибки преобразования функция strtod() возвращает либо HUGE_VAL в случае переполнения, либо —HUGE_VAL в случае потери значимости. Если никакое преобразование невозможно, то возвращается 0.
Функция strtold() является версией типа long double функции strtod().
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main(void)
{
char *end, *start="100.00 pliers 200.00 hammers";
end = start;
while(*start) {
printf ("%f, ", strtod (start, &end));
printf("Remainder: %s\n", end);
start = end;
/* удаление не цифр */
while(!isdigit(*start) && *start) start++;
}
return 0;
}
Будут выведены следующие значения:
100.00000, Remainder: pliers 200.00 hammers
200.00000, Remainder: hammers