Concatenation

Firstly, you can't convert anything to "const" char - the simple fact that it's const means it can't be changed, and so can't have anything converted into it :stuck_out_tongue:

Concatenation can be done in a huge number of ways. Char * is just a block of memory - you just need to copy that memory around the place.

For example, you could use snprintf:

char *s1 = "String 1";
char *s2 = "String 2";

char res[20]; // ensure there is enough room for both strings.

snprintf(res, 20, "%s %s", s1, s2);
// res contains "String 1 String 2"

This is the safest, but most heavy-weight way of doing it. This ensures that the terminating NULL is always in place, and also that the string will never overflow (snprintf as opposed to sprintf).

Faster would be a memory copy:

char *s1 = "String 1";
char *s2 = "String 2";

char res[20]; // ensure there is enough room for both strings.

memcpy(res, s1, 8);
res[8] = ' ';
memcpy(res+9, s2, 8);
res[17] = 0;
// res contains "String 1 String 2"

Note the manual adding of the space between the strings, and the adding of the NULL at the end of the string.

You could use strcpy as well, which would take the NULL into account:

char *s1 = "String 1";
char *s2 = "String 2";

char res[20]; // ensure there is enough room for both strings.

strcpy(res, s1, 8);
res[8] = ' ';
strcpy(res+9, s2, 8);
// res contains "String 1 String 2"

Now, for converting integers into char * you can use the sprintf (or snprintf for safety) function:

char out[10];
int val = 4729;

snprintf(out, 10, "%d", val);
// out contains "4729".

You can do a lot with sprintf / snprintf, but it can be quite resource / memory hungry.