Home Interview Questions and AnswersTechnical Interview Questions and AnswersC Programming C Language String Interview Questions and Answers For Freshers Part-4

string7. 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:
[C]
#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);

}
[/C]
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.
[C]
#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);

}
[/C]
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:
[C]
#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

string’s value */

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. */

}
[/C]
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).

The following functions can be used to convert floating-point values to strings:
Function           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.

8. 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:
[C]
#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);

}
[/C]
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:
[C]
#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);

}
[/C]

You may also like

Leave a Comment