我正在编写一个非常简单的程序,用于从字符串中删除重复的字符。我运行它 visual studio 并得到错误:
Unhandled exception at 0x00d110d9 in inteviews.exe: 0xC0000005: Access violation writing location 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"
但我仍然遇到相同的错误。
最佳答案
您正在尝试修改字符串文字。你不能那样做。
char *str = "abcad";
这是一个字符串文字。它是在只读内存中创建的,因此尝试写入它是一种访问冲突。
关于c++ - 使用指向 char 的指针时访问冲突写入位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8459010/