Право доступа к месту записи при работе с указателями на символ
Я пишу очень простую программу, которая удаляет повторяющиеся символы из строки. Я запустил визуальную студию и получил ошибку:
Необработанное исключение в 0x00d110d9 в inteviews.exe: 0xC0000005: Место записи нарушения прав доступа 0x00d27830.
Я действительно не понимаю, в чем проблема. текущая ячейка получает значение следующей ячейки.
void remove(char *str, char a) {
while (*str != '\0') {
if (*(str+1) == a) {
remove(str + 1, a);
}
*str = *(str +1 );//HERE I GET THE ERROR
++str;
}
}
int _tmain(int argc, _TCHAR* argv[])
{
char *str = "abcad";
while (*str != '\0') {
remove(str,*str);
str++;
}
std::cout << str << std::endl;
return 0;
}
РЕДАКТИРОВАТЬ:
Я уже пытался изменить его наchar str[] = "abcad"
но я все еще получаю ту же ошибку.