while (* src! = '\ 0') {
* ДСТ = * ЦСИ;
Вы должны разыменовать ваши указатели здесь, используя &, а не *
EDIT:
Похоже, у меня есть собственная ошибка сегментации черепа, здесь - слишком рано утром!
Объяснение cnicutar (назначение указателя на строковую константу с помощью char *str2 = "def";
, а затем попытка записи в это место) гораздо более правдоподобно ...