One error I see is in line 10. it should be answer[i] = answer[i] + result[i] + result2[i];
otherwise the carry-over wont work.
This function seems OK, the problem is most likely with the format of the results - you seem to keep them starting from the highest exponent and omit the leading zeroes.
Try debugging it. Set a breakpoint at the beginning of this function and see what the results look like.
And two tips:
Use pass by reference or pass by pointer here - right now you just unnecessarily copy those arrays.
Make char hex[16]
const - this will help the compiler optimize this function.