Question:

How can I convert a string to a number?

Answer:

The standard C library provides several functions for converting strings to numbers of all formats (integers, longs, floats, and so on) and vice versa. One of these functions, atoi(), is used here to illustrate how a string is converted to an integer:

#include <stdio.h>
#include <stdlib.h>
void main(void);
{
     int num;
     char* str = "100";
     num = atoi(str);
     printf("The string 'str' is %s and the number 'num' is %d.\n",
                 str, num);
}

To use the atoi() function, you simply pass it the string containing the number you want to convert. The return value from the atoi() function is the converted integer value.

The following functions can be used to convert strings to numbers:

Function Name   Purpose
atof() - Converts a string to a double-precision floating-point value.
atoi() - Converts a string to an integer.
atol() - Converts a string to a long integer.
strtod() - Converts a string to a double-precision floating-point value and reports any "leftover" numbers that could not be converted.
strtol() - Converts a string to a long integer and reports any "leftover" numbers that could not be converted.
strtoul() - Converts a string to an unsigned long integer and reports any "leftover" numbers that could not be converted.

Sometimes, you might want to trap overflow errors that can occur when converting a string to a number that results in an overflow condition. The following program shows an example of the strtoul() function, which traps this overflow condition:

#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
void main(void);
void main(void)
{
     char* str  = "1234567891011121314151617181920";
     unsigned long num;
     char* leftover;
     num = strtoul(str, &leftover, 10);
     printf("Original string:      %s\n", str);
     printf("Converted number:     %lu\n", num);
     printf("Leftover characters:  %s\n", leftover);
}

In this example, the string to be converted is much too large to fit into an unsigned long integer variable. The strtoul() function therefore returns ULONG_MAX (4294967295) and sets the char* leftover to point to the character in the string that caused it to overflow. It also sets the global variable errno to ERANGE to notify the caller of the function that an overflow condition has occurred. The strtod() and strtol() functions work exactly the same way as the strtoul() function shown above. Refer to your C compiler documentation for more information regarding the syntax of these functions.


Keywords:

© 2017 QuizBucket.org