This function has a bug: char *mildlyuseful(char *a,char *b) { int n; char *c; n = strlen(a) + strlen(b); c = malloc(n); if (!c) return 0; while (*a) *c++ = *a++; while (*b) *c++ = *b++; *c = 0; return c - n; } Explain what the function was probably meant to do, give a small example showing that it does not work correctly, and explain how to make it work correctly.