gpt4 book ai didi

c - C中的这个连接函数有什么问题?

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

这是使用结构的家庭作业的一部分,我似乎无法理解这个函数。该函数是 string_t *concat (string_t *s1, string_t *s2) 并返回新的字符串结构。这是我到目前为止所拥有的,只要达到它就会使编译器崩溃。程序可以编译,但是执行时出现“file.exe has stopped working”错误。任何帮助将不胜感激。谢谢!

typedef struct string{ //String struct (in .h file)

char *line;
int length;

} string_t;


string_t* concat(string_t *s1, string_t *s2) { //actual function (in .c)

int len1, len2;
len1 = length(s1);
len2 = length(s2);

int i, j, s;

string_t *newStr;
newStr = (string_t*)malloc(sizeof(string_t)*2);


for (i = 0; i<len1; i++) {
*((newStr->line)+i) = *((s1->line)+i);
}

for (j=0; j<len2; j++) {
*((newStr->line)+(i+j)) = *((s2->line)+j);
}

*((newStr->line)+(i+j))='\0';

return newStr;

}



concat(s1, s2); //tests function

最佳答案

newStr = (string_t*)malloc(sizeof(string_t)*2);

您为 newStr 分配了内存,但没有为 newStr->line 分配内存。尝试类似的东西:

newStr = malloc(sizeof *newStr);
newStr->line = malloc(s1->length + s2->length + 1);

旁注:*((newStr->line)+i) 可以写成 newStr->line[i]

关于c - C中的这个连接函数有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15104091/

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