gpt4 book ai didi

C string strip whitespace 抛出段错误(core dumped)

转载 作者:太空宇宙 更新时间:2023-11-04 05:13:40 27 4
gpt4 key购买 nike

这是 linux 内核用来去除字符串前导和尾随空格的代码:

char *strstrip(char *s)
{
size_t size;
char *end;

size = strlen(s);

if (!size)
return s;

end = s + size - 1;
while (end >= s && isspace(*end))
end--;
*(end + 1) = '\0';

while (*s && isspace(*s))
s++;

return s;
}

这里我是这样使用的:

int main( void ){

/* strip test*/
char buffer2[60];
char* testy2 = buffer2;
testy2 = " THING! ";
printf("The stripped string: \"%s\"\n",strstrip(testy2));
return 0;
}

程序编译正常,但在执行时它指出:

段错误(核心转储)

为什么会这样?

最佳答案

在分配 testy2 (testy2 = "THING! ";) 期间,您将其指向静态只读 内存。

但是在您的 strstrip() 函数中您正试图修改它。

您可以通过使用 malloc 动态分配 testy2 来解决它例如:

testy2 = malloc( sizeof( "       THING!      " ) + 1 );
strcpy( testy2, s );

// But don't forget to free the memory at the end !
free( testy2 );

关于C string strip whitespace 抛出段错误(core dumped),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18239473/

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