要从字符串中删除重复项,这是我编写的程序:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void remDup(char str[])
{
int i=0,len;
int arr[256]={[0 ... 255] = 0};
while(str[i]!='\0')
{
len=strlen(str);
if(arr[str[i]]==1)
{
memmove(str+i,str+i+1,len);
}
else
arr[str[i]]=1;
i++;
}
printf("String with Unique Characters:%s\n",str);
}
main()
{
remDup("kjijhgfedcaba");
}
但运行程序时显示的错误是: 总线错误:10
代码中需要进行哪些更改? 提前致谢
答案 0 :(得分:3)
"kjijhgfedcaba"
是一个字符串文字,你不能修改C中的字符串文字。
顺便说一下,如果你想将所有arr
元素初始化为0
,而不是这个(这是一个GNU扩展):
int arr[256]={[0 ... 255] = 0};
你可以这样做:
int arr[256]= {0};
答案 1 :(得分:1)
尝试len-i
获取正在移动的内存大小。你肯定会移动不属于你的记忆。 (也就是说,我还没有真正阅读过代码)。