在C中返回一个字符串数组

我正在进行一项任务,我需要让一个方法返回一个指向字符串数组的指针,从文件中读取。 该函数有效,但是当我尝试将返回的指针分配给main函数中的变量时,我最终得到一个空值数组。 这是我的代码:

#include  char **buildAnsArray(){ FILE *in; int num, i; in = fopen("data.txt", "r"); fscanf(in, "%d", &num); char ansArray[10][num]; for(i = 0; i < num; i++){ fscanf(in, "%s", ansArray[i]); } return ansArray; }; main(){ char **ansArray = buildAnsArray(); } 

我正在使用的输入文件(data.txt)以:

 3 B 20 1101 

ansArray(在buildAnsArray中)正确包含{‘B’,’20’,’1101’},但ansArray(在main中)为空。 我知道我可以将所有内容移动到main,而不用担心将指针返回到字符串数组,但是赋值需要buildAnsArray函数。 我该怎么做才能解决这个问题?

 char ansArray[10][num]; return ansArray; 

是一个临时变量。 一旦函数返回它就会被销毁。

做这个: …

 char** ansArray = malloc(num * sizeof(char*)); for(i = 0; i < num; i++){ char* item = malloc(10*sizeof(char)); fscanf(in, "%s", item); ansArray[i] = item; } 

...返回ansArray;

然后

 main(){ char **ansArray = buildAnsArray(); printf("%s", ansArray[1]); free(ansArray); } 

此外,由于在函数中分配了字符串数,因此您还需要返回num,以便释放ansarray中的各个项,这在上面未显示。