CodeNet / Языки программирования / C / C++ / Руководства и справочные материалы по C/C++ / Справочники по функциям / Справочник по библиотечным функциям языка Си
strtod - strtoul - преобразовать из а/ц вида
Описание
strtod Преобразует строку ASCII, на которую указы- вает nptr, в значение типа double. Функция воспринимает ведущие табуляции и пробелы, затем возможный знак и далее строку цифр с необязательной десятичной точкой. Функция strtod завершает считывание строки на пер- вой литере, не являющейся частью числа. Указатель на эту литеру будет записан по адресу endptr, если endptr не равен NULL. strtol Преобразует ASCII строку, на которую указы- вает nptr, в длинное (long) целое число. Функция воспринимает ведущие "пробельные" литеры и далее строку цифр с возможным зна- ком. Функция strtol прекращает чтение стро- ки на первой литере, не являющейся частью записи числа. Указатель на эту литеру будет записан по адресу endptr, если endptr не NULL. Если параметр base (основание) равен 0, первая литера после необязательного знака будет определять основание преобразования. Если эта первая литера '0', а вторая - не 'x' или 'X', то такая строка считается за- писью восьмеричного числа. Если же первая литера равна '0', а вторая - 'x' или 'X', то такая строка будет интерпретироваться как запись шестнадцатеричного числа. Если первая литера от '1' до '9', то строка ин- терпретируется как запись десятичного цело- го. Буквам A-Z нижнего или верхнего регист- ра (т.е. прописным или заглавным) присваи- ваются значения от 10 до 35. Разрешаются только те литеры, значения которых меньше чем base. Если base не равно 0, его значе- ние должно быть между 2 и 36. strtoul Преобразует ASCII строку, на которую указы- вает nptr, в десятичное число типа unsigned long. Описание - аналогично strtol().
Использование
#include <stdlib.h> double strtod(char *nptr, char **endptr); /* ANSI */ long strtol(char *nptr, char **endptr, int base); /* ANSI */ unsigned long strtoul(const char *nptr,char **endptr, int base); /* ANSI */
Возвращаемое значение
strtod Если корректное значение вызывает перепол- нение, в зависимости от знака возвращается плюс или минус HUGE_VAL и errno устанавли- вается в ERANGE. Если недопустимая литера встретилась до разрешенных, возвращается 0. При потере значимости возвращается 0 и errno устанавливается в ERANGE. strtol Если корректное значение вызывает перепол- нение, в зависимости от знака возвращаются LONG_MAX или LONG_MIN и errno устанавлива- ется в ERANGE. Если недопустимая литера встречается до разрешенных, возвращается 0. strtoul Если корректное значение вызывает перепол- нение, возвращается значение ULONG_MAX и errno устанавливается в ERANGE. Если недо- пустимый символ встречается до разрешенных, возвращается 0.
Пример
#include <stdio.h> #include <stdlib.h> char *string, *string2; main() { unsigned long result; long result1; double result2; int base; string = "3.1415926Stop here"; result2 = strtod(string,&string2); printf("String [%s] strtod = [%f]\n", string, result2); base = 8; string = "1011013"; result1 = strtol(string, &string2, base); printf("String [%s] strtol [%ld] (base 8)\n", string, result); base = 2; string = "1011013"; result = strtoul(string, &string2, base); printf("String [%s] strtoul=[%ld] (base 2)\n", string, result); }
Рекомендация
Смотрите также atof, atoi, atol.