Вы увеличиваете указатели и затем ожидаете, что они снова укажут на начало строки.Возможно, вы захотите снова установить указатели на начало
auto beginA = ptrA;
auto beginB = ptrB;
while(*ptrA != '\0'){
cout << *ptrA; // it works fine shows output
ptrA++;
}
ptrA = beginA; // reset to beginning, otherwise ptrA == '\0'
while(*ptrA != '\0'){
*ptrB++ = *ptrA++;
}
*ptrB = '\0';
ptrB = beginA;
while(*ptrB != '\0'){
cout << *ptrB; // this doesn't show any thing and crashes
ptrB++;
}
Обратите внимание, что в вашем коде есть
*ptrB = '\0';
while(*ptrB != '\0'){
, то есть цикл while ничего не печатал, потому что он никогда не выполнялся.То же самое для цикла, который копирует данные: после первого цикла ptrA == '\0'
.