gpt4 book ai didi

c - C 中的段错误,子字符串

转载 作者:太空狗 更新时间:2023-10-29 15:58:14 28 4
gpt4 key购买 nike

我在 this question 方面得到了帮助,其中一个答案建议使用这种技术,但我在这段代码中不断收到段错误(核心转储)错误。

char *nam = array;//<-----(array is a string, we can use "test string" for it
int i = 0;
int length = strlen(array);
int count = 1;
printf("%i [%s]\n", length,nam);
for(i; i < length; i++)
{
puts(nam + i);
nam[strlen(nam) - 1] = '\0';
}

应该发生什么,我应该用绳子做一个金字塔,从前面去掉一个字母,从后面去掉一个字母。使用这段代码,我设法去掉了前面的一个字母,但错误发生在用“\0”“替换”最后一个字母时。有谁知道为什么会这样?

编辑------------(更新代码以进行澄清)

void pyramid(char array[])
{
char nam[] = array;
int i = 0;
int length = strlen(nam);
int count = 1;
printf("%i [%s]\n", length, nam);
for(i; i < length; i++)
{
puts(nam + i);
nam[strlen(nam) - 1] = '\0';
printf("[%s]\n", nam);
}
}

主类

int main (void)
{
char *name = "TEST STRING";
pyramid(name);
}

希望这能澄清这段代码在 char[] = array 上给了我一个无效的初始值设定项;行

最佳答案

char *nam = array;//<-----(array is a string, we can use "test string" for it

你不能修改变量name , 因为 "test string"分配在字符常量区,不能修改。

请使用char nam[] = "test string". , 在这种情况下 "test string"分配在堆栈中,因此您可以修改它。

关于c - C 中的段错误,子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22775931/

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