STRTOL(3)

NOME
strtol - converte uma seqüencia para um inteiro longo

SINÓPSE
#include <stdlib.h>

long int strtol(const char *ptrnum, char **ptrfim, int base);

DESCRIÇÃO
A função strtol() converte a seqüencia em ptrnum para um valor de inteiro longo de acordo com a dada base, a qual deve estar entre 2 e 36 inclusive, ou ser o valor especial 0.

A seqüencia deve começar com uma quantidade arbitrária de espaço em branco (como determinado por isspace(3)) seguida por um único sinal opcional `+' ou `-'. Se base for zero ou 16, a seqüencia pode então incluir um prefixo `0x', e o número será lido em base 16; caso contrário, uma base zero é tomada como 10 (decimal) a menos que o próximo caractere seja `0', caso no qual ela é tomada como 8 (octal).

O restante da seqüencia é convertido para um valor 'long int' da maneira óbvia, parando ao primeiro caractere que não seja um dígito válido na dada base. (Em bases acima de 10, a letra `A' em maiúscula ou minúscula representa 10, `B' representa 11, e assim por diante, com `Z' representando 35.)

Se ptrfim não for NULL, strtol() armazena o endereço do primeiro caractere inválido em *ptrfim. Se não houver qualquer dígito, strtol() armazena o valor original de ptrnum em *ptrfim (e retorna 0). (Por isso, se *ptrnum não for `\0' mas **ptrfim for `\0' no retorno, a seqüencia inteira é válida.)

VALORES RETORNADOS
A função strtol() retorna o resultado da conversão, a menos que o valor fosse causar estouro de representação. Se ocorrer estouro para um negativo, strtol() retorna LONG_MIN. Se ocorrer estouro para um positivo, strtol() retorna LONG_MAX. Em ambos os casos, errno é definido para ERANGE.

ERROS

ERANGE
    A seqüencia dada estava fora de limite; o excedente do valor fora descartado.

DE ACORDO COM
SVID 3, BSD 4.3, ISO 9899.

VEJA TAMBÉM
atof(3), atoi(3), atol(3), strtod(3), strtoul(3).

PROBLEMAS
Ignora a localizações atual.

TRADUZIDO POR LDP-BR em 15/03/2001.

  Tradução:
Marcelo M. de Abreu <mmabreu@terra.com.br>

  Revisão.:
André Luiz Fassone <lonely_wolf@ig.com.br>