繁体   English   中英

在C中返回字符串数组

[英]Returning an array of strings in C

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

#include <stdio.h>

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而不用担心将指针返回到字符串数组,但是分配需要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中的各个项目,上面没有显示。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM