【发布时间】:2011-12-10 18:56:03
【问题描述】:
我正在编写一个非常简单的程序,可以从字符串中删除重复字符。我运行它的 Visual Studio 并得到了错误:
inteviews.exe 中 0x00d110d9 处未处理的异常: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",但我仍然遇到同样的错误。
【问题讨论】:
-
Getting Segmentation Fault 的可能重复项
-
@rob 您在这里提出了 50 个问题,但只投了一次。这个比较穷。请尝试在未来更充分地参与。
-
如果您正在编写 C 或 C++,请先弄清楚自己