For starters, strcopy() should called strconcat() as you are attempting to concatinate two strings in the function.
You have declared "both" as an uninitialized pointer, and have not allocated any data space.
"both" would need to be allocated by malloc() or calloc() to a size that is at least strlen(str_1) + strlen(str_2) + at least 1 for the Nul byte, and I would use a value more than just 1. Then it would be safe to return "both". Then free() it in main() before exiting the program.
Before altering "a" in the for loop:
Creates a pointer to a constant string, and cannot be altered! Should be:
Code:
char a[] = "hello";
This would create a mutable array which is initialized with a constant string. Same for "b".
Code:
printf("%s\n", strcopy(a, b);
You are missing a closing ')'.
Now go back and run your strcopy() function with a debugger to see where your other mistakes are in strcopy().