I'm try to concatenate to char * rv
with the result of a function call that will return an int
. fib()
returns an int. The main problem I'm running into is that strcat()
's signature requires a const char *
as it's second arg:
char * strcat ( char * destination, const char * source );
Here is a small sample of my code. fib()
calculates the nth fibonacci number - in this case, the 7th fibonacci number.
char * rv;
int num;
rv = (char*)malloc(2048*sizeof(char));
num = 7;
...
strcat(rv, (const char *)itoa(fib(num), rv,10));
Obviously this is wrong and won't compile. What is the cleanest way to do this? Do I need another char * var
to store the results of itoa()
first, instead of using rv
?
Thank you for any help you can provide!
Use snprintf()
to construct a buffer containing the int
and then concatenate it to your rv
buffer. Do not attempt to concatenate the existing content of rv
in the same call to snprintf()
:
snprintf(rv, 2048, "%s%d", rv, itoa(fib(num), rv,10)));
as this means the input and output buffers overlap which is undefined behaviour.
Also:
sizeof(char)
is guaranteed to be 1
So the malloc()
call would be:
rv = malloc(2048);
if (rv)
{
}