gpt4 book ai didi

c - 在 strrev 函数实现中出现 "segmentation failed"错误

转载 作者:太空狗 更新时间:2023-10-29 14:52:43 24 4
gpt4 key购买 nike

void main() { 
void strrev(char *);
char *p="GOOd";
strrev(p);
printf("%s",p);
}

void strrev(char *str) {
char temp, *end_ptr;
if( str == NULL || !(*str) ) return;
end_ptr = str + strlen(str) - 1;

while( end_ptr > str )
{
temp = *str;
*str = *end_ptr;
*end_ptr = temp; str++;
end_ptr--;
}
}

我收到错误分割失败的消息,谁能帮我解决一下...

最佳答案

声明:

char *p = "GOOd";

定义一个字符串文字“GOOD”,由指针p指向。

您正在尝试通过 strrev 函数修改此字符串文字,这会导致Undefined Behavior(UB) 和崩溃。

字符串文字的问题是它们存储在只读(实现定义)内存位置,不允许用户程序更改该位置。如果程序尝试这样做,则会导致 UB。

因此,与其使用字符串文字,不如使用数组。

你应该使用:

char p[] = "GOOd";

关于c - 在 strrev 函数实现中出现 "segmentation failed"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8448332/

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