Проблема здесь:
char *xyz;
memset(xyz,0,strlen(temp));
Вы никогда не инициализировали xyz
.Следовательно, это недопустимый указатель.
Что нужно для этого сделать, выделить для него что-то:
char *xyz = malloc(strlen(temp) + 1); // Allocate, +1 is for the '\0'.
memset(xyz,0,strlen(temp));
и освободить его, когда закончите:
int main() {
char temp[] = "ABCDEF"
char *xyz;
xyz = example(temp);
printf("Returned string is: %s",xyz);
free(xyz); // Free
return 0;
}
РЕДАКТИРОВАТЬ: Другие проблемы:
Эти 3 строки здесь очень опасны:
memset(xyz,0,strlen(temp));
strncpy(xyz,temp,3); // The nul is not copied in strncpy.
xyz[3] = '\0'; // Add the nul manually.
strcat(xyz,"XX"); // You need to ensure that xyz is large enough.