gpt4 book ai didi

c - 从字符串 C 中的给定位置删除给定数量的字符

转载 作者:行者123 更新时间:2023-11-30 19:44:28 25 4
gpt4 key购买 nike

我正在尝试从字符串中删除给定数量的字符,并且还必须从特定位置删除它。例如。我有一个字符串“helloStackOverFlow”和给定的数字:位置i = 5,要删除的字符数n = 9。所以我们得到“helloFlow”。

当我执行程序时,出现错误在 skuska trening.exe 中的 0x00EC166F 处出现未处理的异常:0xC0000005:访问冲突写入位置 0x00EC58D7。

这是我的代码,我认为字符串分配有问题,它想写入不存在的地方,但我不确定......

 void remove(char s[], int n, int i){

int j,dlzka=0;
dlzka = strlen(s);

for(j=i; j<dlzka; j++){
do{
s[j] = s[j+n];
}while( (j+n)==dlzka);
}
printf("%s\n", s);

}

int main()
{
char s[100];
int n, i;

remove("helloStackOverFlow", 9, 5);

system("pause");
return 0;
}

最佳答案

您的代码中有几个错误

  1. 您正在尝试更改中的字符串文字

    remove("helloStackOverFlow", 9, 5);
  2. 您的函数名称与标准函数的名称相同。

  3. 你的remove()函数算法是错误的,while循环永远不会结束,因为jn内部都没有改变循环。

这段代码应该可以工作

void removeChunk(char s[], unsigned int n, unsigned int i)
{
unsigned int k;
unsigned int length;

if ((s == NULL) || (i == 0))
return;
length = strlen(s);
if (i + n > length)
n = length - i;
for (k = 0 ; (k < n) && (s[k + i - 1] != '\0') ; k++)
s[k + i] = s[k + i + n];
}

int main()
{
char s[100] = "helloStackOverFlow";

removeChunk(s, 9, 5);

printf("%s\n", s);
return 0;
}

关于c - 从字符串 C 中的给定位置删除给定数量的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28076798/

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