gpt4 book ai didi

c - 使用 memmove 时发生总线错误

转载 作者:行者123 更新时间:2023-11-30 18:32:28 34 4
gpt4 key购买 nike

Possible Duplicate:
Bus error troubleshooting

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

#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

代码中需要进行哪些更改?提前致谢

最佳答案

"kjijhgfedcaba" 是一个字符串文字,您无法在 C 中修改字符串文字。

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

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

你可以简单地这样做:

int arr[256]= {0};

关于c - 使用 memmove 时发生总线错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13100187/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com