The way u were using memcpy goes out of bounds on strOne since strOne is of size 2 and u were trying to write characters at strOne[2] (overwritting the null terminator) and strOne[3] which is undefined.
You could add a 3rd char strThree to hold the result of the append. U must be careful with bounds checking:
If it's binary data then perhaps instead look into using the left-bitshift operator (<<) and then binary OR (|) the data u want to append to the end...
The reason why your example doesn't work is that the compiler allocates 3 characters for strOne. Two "data" characters and a null terminator.
When you copy into strOne+2 you're overwriting strOne's null terminator with 'b' and then overwriting some location in memory that is not part of strOne with 'a'. strOne is probably also no longer null terminated depending on what random character is present strOne+4.