Программирование на C и C++

Онлайн справочник программиста на C и C++

strtod, strtold

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

Смешанные функции