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);