Monday 7 November 2011

How can I convert a string to a number? in C programming

How can I convert a string to a number?

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);
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.

Cross Reference:

VI.7: How can I convert a number to a string?

No comments:

Post a Comment