C - язык со статической типизацией. Это означает, что во время объявления переменной под неё выделяется область памяти, которая в дальнейшем не меняется. Соответственно если происходит выход за пределы этой области, то есть шансы испортить соседние данные, код программы или получить системное исключение при попытке записи за пределы памяти, отведённой программе.
Функция копирования строк есть в стандартной библиотеке string.h и устроена несколько сложнее. Попробуйте с помощью своей функции выполнить следующий код:
char str[20] = "Прпущен символ";
strcpy(str+3, str+2);
str[2] = 'о';
printf("%s\n", str);