Wednesday, November 14, 2007

Extracting Numbers from Strings using strol()

There are many applications that store numbers in strings that also contain text. For example, some databases store dates as strings in the form of "01Jan".


You can extract the number from a string by using the standard function strtol() ("string to long").

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

nptr

Null-terminated string to convert

endptr

Pointer to character that stops scan

base

Number base to use

The strtol function converts nptr to a long. strtol stops reading the string nptr at the first character it cannot recognize as part of a number.

In the following example, strtol() extracts the number 14 from the string "14-Feb" and assigns that number to n:

#include "stdafx.h"

#include

int main(int argc, char* argv[])

{

char s[] = "14-Feb";

long n = strtol(s, NULL, 0); //n = 14

return 0;

}

In this example, the radix is decimal. However, you can specify any radix between 2 through 36 as the third argument of strtol(). Alternatively, you can let strtol() deduce the radix automatically according to the numeric characters it reads from the scanned string by supplying 0 as the radix value.

Also check functions strtod and strtoul.

No comments: