gpt4 book ai didi

c - memcpy 期间的段错误

转载 作者:太空宇宙 更新时间:2023-11-04 06:35:53 25 4
gpt4 key购买 nike

我正在尝试创建一个函数来反转字符串的一部分的顺序。我是使用指针的新手,出于某种原因,我可以访问字符串中字符的位置以复制出子字符串,但我无法将它们放回相同的位置...

当我尝试将反转的子字符串复制回其原始位置时,我得到了

程序收到信号 SIGSEGV,段错误。0x00007ffff7b5dc66 在 ?? () 来自/lib/x86_64-linux-gnu/libc.so.6

任何帮助都会很棒!

这是我目前所拥有的:

void reverse(char* line, int start, int end){

char str[end-start];

memcpy ( str , line + start , end-start );

reverseSubString ( str );

memcpy ( line + start, str , end-start );

}

void reverseSubString(char* str){

int i, j, len;
char temp;

i=j=len=temp=0;

len=strlen(str);

for (i=0, j=len-1; i<=j; i++, j--)
{
temp=str[i];
str[i]=str[j];
str[j]=temp;
}
}

最佳答案

  char str[end-start];

memcpy ( str , line + start , end-start );

除非包含原始字符串的 0 终止符,否则您的 char 数组不是以 0 终止的。所以

len=strlen(str);

计算谁知道如果它还没有崩溃会怎样。然后

for (i=0, j=len-1; i<=j; i++, j--)
{
temp=str[i];
str[i]=str[j];
str[j]=temp;
}

在分配的内存之外访问。

关于c - memcpy 期间的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15100795/

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