strtod(), strtof(), strtold()

Преобразовать строку в число с двойной точностью (double)

Прототип:

#include <stdlib.h>
double strtod( const char *ptr,
char **endptr );
float strtof( const char *ptr,
char **endptr );
long double strtold( const char *ptr,
char **endptr );

Аргументы:

ptr
Указатель на строку для преобразования.
endptr
Если этот аргумент не равен NULL, функция сохраняет в нем указатель на первый нераспознанный символ, найденный в строке.

Библиотека:

libc

Описание:

Функции strtod(), strtof() и strtold() преобразуют строку, на которую указывает ptr, в вещественное число:

Данные функции пропускают все пробельные символы в начале строки, затем ищут последовательность символов, состоящую из необязательного знака плюс или минус, за которым следует:

Преобразование заканчивается на первом нераспознанном символе. Если endptr не равен NULL, указатель на первый нераспознанный символ сохраняется в endptr.

Возвращаемое значение:

Преобразованное значение. Если корректное значение вызовет переполнение, возвращается плюс или минус HUGE_VAL, а errno устанавливается в ERANGE. Если корректное значение вызовет потерю значимости, то возвращается нуль, а errno устанавливается в ERANGE.


Note: Данные функции возвращают нуль и устанавливают errno, если входную строку нельзя преобразовать; функции не меняют errno, если ошибок не возникло. Если требуется проверить возникновение ошибок, следует установить для errno значение 0, вызвать функцию, а затем снова проверить errno.

Коды ошибок:

ERANGE
Возвращаемое значение вызовет переполнение или потерю значимости.
EINVAL
Преобразование не может быть выполнено.

Примеры:

#include <stdio.h>
#include <stdlib.h>
int main( void )
{
double pi;
pi = strtod( "3.141592653589793", NULL );
printf( "pi=%17.15f\n",pi );
return (EXIT_SUCCESS);
}

Классификация:

ANSI, POSIX 1003.1

Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Да
В потоке
Да

Тематические ссылки:

atof(), errno




Предыдущий раздел: Описание API системной библиотеки