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
