-1

可能重复:
总线错误故障排除

要从字符串中删除重复项,这是我编写的程序:

#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");
}

但是运行程序时显示的错误是: Bus error: 10

必须对代码进行哪些更改?提前致谢

4

2 回答 2

3

"kjijhgfedcaba"是字符串文字,您不能在 C 中修改字符串文字。

顺便说一句,如果您想将所有arr元素初始化为0, 而不是 this (这是 GNU 扩展):

int arr[256]={[0 ... 255] = 0};

你可以简单地这样做:

int arr[256]= {0};
于 2012-10-27T12:32:58.347 回答
1

尝试len-i移动内存的大小。你肯定会移动不属于你的记忆。(也就是说,我还没有真正阅读过代码)。

于 2012-10-27T12:32:42.197 回答