Monday 7 November 2011

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

How can I convert a number to a string?

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

#include <stdio.h>
#include <stdlib.h>
void main(void);
void main(void)
{
int num = 100;
char str[25];
itoa(num, str, 10);
printf(“The number ‘num’ is %d and the string ‘str’ is %s.\n”,
num, str);
}

Notice that the itoa() function takes three arguments: the first argument is the number you want to convert
to the string, the second is the destination string to put the converted number into, and the third is the base,
or radix, to be used when converting the number. The preceding example uses the common base 10 to
convert the number to the string.

The following functions can be used to convert integers to strings:
------------------------------------------------------------------------------------------------------------
Function Name                             Purpose
------------------------------------------------------------------------------------------------------------
itoa()                                            Converts an integer value to a string.
ltoa()                                            Converts a long integer value to a string.
ultoa()                                          Converts an unsigned long integer value to a string.
----------------------------------------------------------------------------------------------------------
Note that the itoa(), ltoa(), and ultoa() functions are not ANSI compatible. An alternative way to convert
an integer to a string (that is ANSI compatible) is to use the sprintf() function, as in the following example:

#include <stdio.h>
#include <stdlib.h>
void main(void);
void main(void)
{
int num = 100;
char str[25];
sprintf(str, “%d”, num);
printf(“The number ‘num’ is %d and the string ‘str’ is %s.\n”,
num, str);
}
When floating-point numbers are being converted, a different set of functions must be used. Here is an
example of a program that uses the standard C library function fcvt() to convert a floating-point value to
a string:
#include <stdio.h>
#include <stdlib.h>
void main(void);
void main(void)
{
double num = 12345.678;
char* str;
int dec_pl, sign, ndigits = 3; /* Keep 3 digits of precision. */
str = fcvt(num, ndigits, &dec_pl, &sign); /* Convert the float
to a string. */
printf(“Original number: %f\n”, num); /* Print the original
floating-point
value. */
printf(“Converted string: %s\n”, str); /* Print the converted
printf(“Decimal place: %d\n”, dec_pl); /* Print the location of
the decimal point. */
printf(“Sign: %d\n”, sign); /* Print the sign.
0 = positive,
1 = negative. */
}

Notice that the fcvt() function is quite different from the itoa() function used previously. The fcvt()
function takes four arguments. The first argument is the floating-point value you want to convert. The
second argument is the number of digits to be stored to the right of the decimal point. The third argument
is a pointer to an integer that is used to return the position of the decimal point in the converted string. The
fourth argument is a pointer to an integer that is used to return the sign of the converted number (0 is positive,
1 is negative).

Note that the converted string does not contain the actual decimal point. Instead, the fcvt() returns the
position of the decimal point as it would have been if it were in the string. In the preceding example, the dec_pl

integer variable contains the number 5 because the decimal point is located after the fifth digit in the resulting
string. If you wanted the resulting string to include the decimal point, you could use the gcvt() function
(described in the following table).

The following functions can be used to convert floating-point values to strings:
----------------------------------------------------------------------------------------------------------
Function Name                             Purpose
----------------------------------------------------------------------------------------------------------
ecvt()                                           Converts a double-precision floating-point value to a string without an
                                                    embedded decimal point.
fcvt()                                            Same as ecvt(), but forces the precision to a specified number of digits.
gcvt()                                           Converts a double-precision floating-point value to a string with an
                                                    embedded decimal point.
-----------------------------------------------------------------------------------------------------------
See FAQ VI.8 for an explanation of how you can convert strings to numbers.

Cross Reference:

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

No comments:

Post a Comment