C语言 如何在不使该数组全局的情况下从另一个函数中释放动态分配的数组?


#include <stdio.h>
char *mystrcat(char *s1, const char *s2);    // prototype

char *newstring;    // global pointer
int main(){
char string1[] = "test1";
char string2[] = "test1";
printf("Final string: %sn", mystrcat(string1, string2));
free(newstring);    // I'd like to free the array here, without using a global array
}
char *mystrcat(char *s1, const char *s2){
unsigned int len1=0;
while (*(s1+len1)!='') {  // to count lenght of first string
len1+=1;
}
unsigned int len2 = 0;
while (*(s2+len2)!='') {  // to count lenght of second string
len2+=1;
}
newstring = calloc(len1+len2+1, sizeof(char));
unsigned int i = 0;
size_t main_count = 0;
for (; main_count<len1; ++main_count, ++i){
*(newstring+main_count) = *(s1+i);
}
i = 0;
for (; main_count<len1+len2; ++main_count, ++i){
*(newstring+main_count) = *(s2+i);
}
return newstring;
}

这是一个连接两个字符串的程序。问题是我正在做一个练习,我必须使用该原型,我无法更改它,所以我无法传递数组以供参考。那么如何将数组返回到 main 然后释放该数组(在 main 中(,而无需在 main 之外使用全局数组?

您已经从mystrcat返回newstring,您只需将其存储在变量中即可。

int main(){
char string1[] = "test1";
char string2[] = "test1";
char* newstring = mystrcat(string1, string2);
printf("Final string: %sn", newstring);
free(newstring);
}

最新更新