appending data at two memory adress into one pointer

I have 2 functions that measure temperature and humidity. Each function returns a pointer to an address containing the data.

uint8_t * get_temperature(int *temperaturelen)
{
    memset(htpbuff, 0, sizeof(htpbuff));
    int temp_c = readTemperatureC();

    htpbuff[0] = 'T';
    htpbuff[1] = 'C';   
    htpbuff[2] = temp_c&0xff;
    htpbuff[3] = (temp_c>>8)&0xff;
    htpbuff[4] = (temp_c>>16)&0xff;
    htpbuff[5] = (temp_c>>24)&0xff;

    *temperaturelen = 6;  
    return (&htpbuff[0]);
}
uint8_t * get_humidity(int *humiditylen)
{
    memset(htpbuff, 0, sizeof(htpbuff));
    int humidity = readHumidity();

    htpbuff[0] = 'R';
    htpbuff[1] = '%';
    htpbuff[2] = humidity&0xff;
    htpbuff[3] = (humidity>>8)&0xff;
    htpbuff[4] = (humidity>>16)&0xff;
    htpbuff[5] = (humidity>>24)&0xff;

    *humiditylen = 6;  
    return (&htpbuff[0]);
}

I call the functions like this:

tempptr = get_live_temperature(& temp_len);
humptr = get_live_humidity(& hum_len);

I want to appeand the data at each address into a single pointer so that the data at that address would look like TC1234R%1234.

How could I do this?

The design of these functions is quite strange.

You could however trick (or slightly fix) the functions. First remove the memset call from both functions, no need to clear the whole array to simply put a null at the end (every other cell is used).

char buff[13] = {};  //13 to include a null

char *htpbuff;  //not an array anymore.

//in your function:
int requiredBecauseBadDesign;

htpbuff = buff;
get_temperature( &requiredBecauseBadDesign );

htpbuff = buff + 6;
get_humidity( &requiredBecauseBadDesign );

//Now buff (and htpbuff) will contain the combined string.

But you should try create your own function from the internals of these two, as they have a 'crappy' design.

appending data at two memory adress into one pointer

You can't do that. You can copy data from two locations into one location that a pointer points to.

Why do your functions need to return pointers to global arrays?

Post ALL of your code!

You could do that with sting copy but why? You rarely use it. if you want to print "TC1234R%1234" somewhere just print "TC1234" and then "R%1234". Just don't bother concatenating them first.

PaulS:
Why do your functions need to return pointers to global arrays?

I've seen these horrible things before in other questions. They are obviously circulating somewhere. The mere fact they return a length used, while clearing the 'whole' buffer makes them quite irrational.