Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
STRTOL(3)		   Linux Programmer's Manual		     STRTOL(3)

NAME
       strtol, strtoll,	strtoq - convert a string to a long integer.

SYNOPSIS
       #include	<stdlib.h>

       long int
       strtol(const char *nptr,	char **endptr, int base);

       long long int
       strtoll(const char *nptr, char **endptr,	int base);

DESCRIPTION
       The  strtol()  function converts	the initial part of the	string in nptr
       to a long integer value according to the	given base, which must be  be-
       tween 2 and 36 inclusive, or be the special value 0.

       The  string  must begin with an arbitrary amount	of white space (as de-
       termined	by isspace(3)) followed	by a single optional `+' or `-'	 sign.
       If  base	 is zero or 16,	the string may then include a `0x' prefix, and
       the number will be read in base 16; otherwise, a	zero base is taken  as
       10  (decimal)  unless  the  next	 character is `0', in which case it is
       taken as	8 (octal).

       The remainder of	the string is converted	to a long int value in the ob-
       vious  manner,  stopping	 at  the  first	character which	is not a valid
       digit in	the given base.	 (In bases above 10, the letter	`A' in	either
       upper  or  lower	 case  represents 10, `B' represents 11, and so	forth,
       with `Z'	representing 35.)

       If endptr is not	NULL, strtol() stores the address of the first invalid
       character  in *endptr.  If there	were no	digits at all, strtol()	stores
       the original value of nptr in *endptr (and returns 0).  In  particular,
       if  *nptr is not	`\0' but **endptr is `\0' on return, the entire	string
       is valid.

       The strtoll() function works just like the strtol()  function  but  re-
       turns a long long integer value.

RETURN VALUE
       The  strtol() function returns the result of the	conversion, unless the
       value would underflow or	overflow.  If an  underflow  occurs,  strtol()
       returns	LONG_MIN.   If	an overflow occurs, strtol() returns LONG_MAX.
       In both cases, errno is set to ERANGE.  Precisely the  same  holds  for
       strtoll()  (with	 LLONG_MIN  and	 LLONG_MAX  instead  of	 LONG_MIN  and
       LONG_MAX).

ERRORS
       ERANGE The resulting value was out of range.

       EINVAL (not in C99) The given base contains an unsupported value.

       The implementation may also set errno to	EINVAL in case	no  conversion
       was performed (no digits	seen, and 0 returned).

NOTES
       In  locales  other  than	 the "C" locale, also other strings may	be ac-
       cepted.	(For example, the thousands separator of  the  current	locale
       may be supported.)

       BSD also	has

	   quad_t
	   strtoq(const	char *nptr, char **endptr, int base);

       with completely analogous definition.  Depending	on the wordsize	of the
       current architecture, this may be equivalent to strtoll()  or  to  str-
       tol().

CONFORMING TO
       strtol()	 conforms  to  SVID  3,	BSD 4.3, ISO 9899 (C99)	and POSIX, and
       strtoll() to ISO	9899 (C99) and POSIX-2001.

SEE ALSO
       atof(3),	atoi(3), atol(3), strtod(3), strtoul(3)

GNU				  2002-05-30			     STRTOL(3)

NAME | SYNOPSIS | DESCRIPTION | RETURN VALUE | ERRORS | NOTES | CONFORMING TO | SEE ALSO

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=strtol&sektion=3&manpath=Red+Hat+9>

home | help