如何返回char *arr[]与可变长度的C?



我想重构一个函数,以便我可以将它用于不同长度的数组,并返回新创建的数组,以便其他函数可以访问它。我不能让数组变成静态的因为静态数组不能有动态长度。我也不能使用全局结构体因为它需要取数组的长度我认为它必须被硬编码。所以问题是是否有可能这样做:

char* splitElementsArr(FILE* file){
int length = countBlankLines(file);
char *arr[length] // or maybe use malloc here
...Some operations to fill array
return arr;

不行。您正在返回一个指向在堆栈上动态分配的本地数据的指针。当您返回时,这些数据将不再存在。

解决方案:使用malloc()

最新更新