CodeNet / Языки программирования / C / C++ / Linux/Unix / Справочник С/C++ для UNIX - Список функций
CodeNet / Языки программирования / C / C++ / Руководства и справочные материалы по C/C++ / Справочники по функциям / Справочник С/C++ для UNIX - Список функций
CodeNet / Языки программирования / C / C++ / Руководства и справочные материалы по C/C++ / Справочники по функциям / Справочник С/C++ для UNIX - Список функций
strtod-strtol
STRTOD-STRTOL
#include <stdlib.h>
double strtod(nptr, endptr); преобразует строку,
на которую указывает
nptr, в double
char *nptr; указатель на строку
char **endptr; указатель на конец
просмотра
long strol(nptr,endptr,base); преобразует строку в
long десятичное це-
лое, эквивалентное
числу с данным осно-
ванием base
char *nptr;
char **endptr;
int base; используемое основа-
ние
Описание.
Функции strtod и strtol соответственно преобразуют символь-
ную строку к значению с двойной точностью или к длинному целому
значению. Исходная строка string представляет собой последова-
тельность символов, которые интерпретируются как числовое значе-
ние специального типа. Эти функции прекращают чтение строки как
только встретится символ, который не может быть частью числа (это
может быть нулевой символ '\0 в конце строки); для strtol символом
прерывания может быть также первый цифровой символ, который боль-
ше или равен base. Если endptr - не NULL, *endptr указывает на
тот символ, на котором останавливается просмотр.
Функция strtod предполагает, что nptr указывает на строку,
имеющую следующую форму:
[whitespace][sign][digiits][.digits][{d:D:e:E}[sign]digits]
При появлении первого символа, не отвечающего этой форме,
обработка прекращается.
Функция strtol предполагает, что nptr указывает на строку
следующей структуры:
[whitespace][sign][0][x][digits]
Если base лежит между 2 и 36, это значение используется как
основание системы счисления данного числа.
Если base = 0, начальные символы строки, на которые указы-
вает nptr, используются для определения основания. Если первый
символ - 0 и второй - одна из цифр от 1 до 7, то строка интерпре-
тируется как восьмеричное целое; если первый символ 0, а второй x
или X, тогда строка понимается как шестнадцатеричное целое; если
первый символ принадлежит последовательности 1-9, то строка пони-
мается как десятичное целое.
Возвращаемое значение.
Функция strtod возвращает значение числа с плавающей точ-
кой, исключая случаи переполнения или потери результата (т.е. аб-
солютное значение результата меньше, чем это допустимо диапазоном
представления числа). В случае переполнения или потери значимости
результата возвращается соответственно +HUGE или -HUGE.
Функция strtol возвращает значение преобразованной строки,
исключая случай переполнения или потери результата. В этом случае
возвращается соответственно LONG_MAX или LONG_MIN. Обе функции
устанавливают errno в ERANGE.
См. также atof, atol.
Пример.
#include <stdlib.h>
main()
{
char *string, *stopstring;
double x;
long l;
int bs;
string="3.1415926This stopped it";
x=strtod (string, &stopstring);
printf ("string=%s\n",string);
printf ( strtod=%ld (base %d)\n", l, bs);
printf (" Stopped scan at %s\n\n", stopstring);
string="10110134932";
printf ("string=%s\n", string);
for (bs=2; bs<=8; bs*=2) {
l=strtol(string, &stopstring, bs);
printf (" strtol=%ld (base %d)\n",l,bs);
printf (" Stopped scan at %s\n\n",stopstring);
}
}
На выходе:
string = 3.1415926This stopped it
strtod = 3.141593
Stopped scan at This stopped it
string = 10110134932
strtol = 45 (base 2)
Stopped scan at 34932
strtol = 4423 (base 4)
Stopped scan at 4932
strtol = 2134108 (base 8)
Stopped scan at 932
Оставить комментарий
Комментарии
1.


24 октября 2018, 11:15:45
ошибка printf( strod=%ld (base %d)\n", l, bs);
надо printf(" strod=%lf (base %d)\n", x, bs);
надо printf(" strod=%lf (base %d)\n", x, bs);

