RAD Studio
ContentsIndex
PreviousUpNext
strtol, wcstol

Header File 

stdlib.h  

Category 

Conversion Routines, Math Routines 

Prototype 

long strtol(const char *s, char **endptr, int radix); 

long wcstol(const wchar_t *s, wchar_t **endptr, int radix); 

Description 

Converts a string to a long value. 

strtol converts a character string, s, to a long integer value. s is a sequence of characters that can be interpreted as a long value; the characters must match this generic format: 

[ws] [sn] [0] [x] [ddd] 

where:

[ws]  
=  
optional whitespace  
[sn]  
=  
optional sign (+ or -)  
[0]  
=  
optional zero (0)  
[x]  
=  
optional x or X  
[ddd]  
=  
optional digits  

strtol stops reading the string at the first character it doesn't recognize. 

If radix is between 2 and 36, the long integer is expressed in base radix. If radix is 0, the first few characters of s determine the base of the value being converted. 

If radix is 1, it is considered to be an invalid value. If radix is less than 0 or greater than 36, it is considered to be an invalid value. 

Any invalid value for radix causes the result to be 0 and sets the next character pointer *endptr to the starting string pointer. 

If the value in s is meant to be interpreted as octal, any character other than 0 to 7 will be unrecognized. 

If the value in s is meant to be interpreted as decimal, any character other than 0 to 9 will be unrecognized. 

If the value in s is meant to be interpreted as a number in any other base, then only the numerals and letters used to represent numbers in that base will be recognized. (For example, if radix equals 5, only 0 to 4 will be recognized; if radix equals 20, only 0 to 9 and A to J will be recognized.) 

If endptr is not null, strtol sets *endptr to point to the character that stopped the scan (*endptr = &stopper). 

Return Value 

strtol returns the value of the converted string, or 0 on error. 

Example  

#include <stdlib.h>
#include <stdio.h>
int main(void)
{
   char *string = "87654321", *endptr;
   long lnumber;
   /* strtol converts string to long integer  */
   lnumber = strtol(string, &endptr, 10);
   printf("string = %s  long = %ld\n", string, lnumber);
   return 0;
}

Portability

 
POSIX 
Win32 
ANSI C 
ANSI C++ 
strtol  
+  
+  
+  
+  
wcstol  
 
+  
+  
+  
Copyright(C) 2009 Embarcadero Technologies, Inc. All Rights Reserved.
What do you think about this topic? Send feedback!