Функция Преобразует строку в длинное целое значение.
Синтаксис #include
long strtol(const char *s, char **endptr,
int radix);
Файл, содержащий stdlib.h
прототип
Описание strtol преобразует символьную строку s к длино-
му целому значению. Аргумент s - это последова-
тельность символов, которые могут быть интерпре-
тированы, как длинное целое; они должны соответс-
твовать следующему формату:
[ws] [sn] [0] [x] [ddd] , где
[ws] - необязательный незначащий символ;
[sn] - необязательный знак (+ или -);
[0] - необязательный нуль (0);
[x] - необязательный x или X.
[ddd]- необязательные цифры.
strtol прекращает чтение строки на первом симво-
ле, который нераспознан.
Если параметр radix лежит в пределах между 2 и
36, длинное целое число выражается по основанию
radix. Если radix равно 0, первые несколько сим-
волов строки s определяют основание преобразуемо-
го значения.
Первый Второй Строка интепретируется, как
символ символ
0 1-7 восьмеричное
0 x или X шестнадцатеричное
1-9 ---- десятичное
Если radix = 1, это будет считаться неверным зна-
чением. Если radix<0, это также будет считаться
неверным значением. Если radix>36, это будет не-
верным значением. Любое неверное значение для
radix устанавливает результат в 0 и присваивает
указателю на следующий символ *endptr - указатель
на начало строки. Если подразумевается, что зна-
чение s будет интерпретироваться, как восьмирич-
ное, любой символ, кроме цифр от 0 до 7, не будет
распознаваться. Если подразумевается, что значе-
ние s будет интерпретироваться, как десятичное,
любой символ, кроме цифр от 0 до 9, не будет рас-
познаваться. Если значение s будет интерпретиро-
ваться, как число по любому другому основанию,
будут распознаваться только те цифры и буквы, ко-
торые имеются в числах по данному основанию.
(Например, если radix = 5, будут распознаваться
только цифры от 0 до 4; если radix = 20, будут
распознаваться цифры от 0 до 9 и буквы от А до
J). Если endptr не ноль, strol устанавливает
*endptr в указатель на символ, который завершает
сканирование (*endptr = &stopper).
Возвращаемое strtol возвращает значение преобразованной строки
значение или 0 в случае ошибки.
Переносимость strtol поддерживается на системах UNIX и совме-
стима с ANSI C.
Смотри также atofatolstrtoul
Пример:
#include
#include
int main(void)
{
char *string = "87654321", *endptr;
long lnumber;
/* strtol преобразует строку к длинному целому */
lnumber = strtol(string,&endptr,10);
printf("Строка: %s, число: %ld\n",string,lnumber);
return 0;
}