How to convert integer to string array without specify array size?

H

henrytcy

Hi,

How can I convert integer, for example 12113, to char array but without
specify an array size in C programming?

Thanks!
 
R

Richard Bos

How can I convert integer, for example 12113, to char array but without
specify an array size in C programming?

You can't. Where would you put it? In random, sizeless memory? There is
no such thing. Whenever you have an array, you will have had to specify
its size somehow.

Richard
 
H

henrytcy

Hi Richard,

Thank you for you reply!

But how can I read an integer for example, 12113, one by one for
comparison?

Thanks?
 
S

Saif

How can I convert integer, for example 12113, to char array but without
specify an array size in C programming?

You can use dynamically allocated memory. To get the size of the string
needed, you can find the log (base 10) of your number, truncate it, and
add 1.

For example for 12113...

size = floor(log10(12113)) + 1 = 4 + 1 = 5

You can now allocate a string with size characters using malloc and use
it to store your converted string.
 
N

Niklas Norrthon

Saif said:
You can use dynamically allocated memory. To get the size of the string
needed, you can find the log (base 10) of your number, truncate it, and
add 1.

For example for 12113...

size = floor(log10(12113)) + 1 = 4 + 1 = 5

If I'm going to convert it to an char array I'd use snprintf to
calculate the size:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
char* buf = NULL;
int x = 12113;
size_t sz = snprintf(buf, 0, "%d", x) + 1;
buf = malloc(sz);
snprintf(buf, sz, "%d", x);
/* do something with buf */
free(buf);

return 0;
}
 
J

James.Mahler

why couldn't you just use asprintf ?
You can use dynamically allocated memory. To get the size of the string
needed, you can find the log (base 10) of your number, truncate it, and
add 1.

For example for 12113...

size = floor(log10(12113)) + 1 = 4 + 1 = 5

You can now allocate a string with size characters using malloc and use
it to store your converted string.
 
S

Saif

Niklas said:
If I'm going to convert it to an char array I'd use snprintf to
calculate the size:

snprintf is a new function added in C99 and may not be supported by all
compilers. I know it's not supported in mine.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,483
Members
44,901
Latest member
Noble71S45

Latest Threads

Top