char* format_tA(char* t_bufA, time_t tA){
snprintf_P(t_bufA,sizeof(t_bufA),PSTR("%d:%02d:%02d %s %s %d, %4d"),
hourFormat12(tA),minute(tA),second(tA),(isPM(tA) ? "PM" : "AM"),
monthShortStr(month(tA)),day(tA),year(tA));
return t_bufA;
}
Passing a pointer to some memory to the function means that the function can modify the memory pointed to. Why you then need to return that pointer is mystery.