c - 从函数返回字符串数组的指针

标签 c string function pointers

所以我需要帮助从从文件获取的函数返回字符串数组的指针。字符串不超过 10 个。

输入文件:

3
102
A3B
50

第一个数字是我需要多少个字符串,后面的数字是我需要存储在字符串中的数字。

函数:

   char ** buildArray(){

    int x, i;

    fscanf(fp, "%d", &x);

    char answer[x][10];

    for(i=0; i<x; i++){

        fscanf(fp, "%s", answer[i]);

    }

    return answer;
}

我可以正确获取要存储在字符串数组“answer”中的值,但我无法正确返回它。

主要功能:

    int main() {

    char * answers;

    fp = fopen("data.txt", "r");

    if(fp == NULL){
        printf("Could not find file.\n");
        exit(EXIT_FAILURE);
    }

    answers = buildAnsArray();

    printf("%s", answer[1]); //used as a test to see if i passed the array of strings correctly

    fclose(fp);
    return 0;
}

在主函数中,当我尝试打印一个值时,它最终崩溃了,或者打印了奇怪的符号

最佳答案

假设这是 C 的某种风格,您试图返回一个指向变量的指针,answer,它在函数内部自动分配,这意味着它会自动释放 当你退出该功能时。因此,要么在该函数外部创建 answer 并将其传入以进行填充,要么明确为其分配空间,以便在函数返回后它可以存活。

关于c - 从函数返回字符串数组的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26434380/

相关文章:

c - 有人知道不依赖 gcc 的 C 编译器吗?

c - 仅使用 For 循环反转字符串

c - 在 C 中本地声明巨大的数组

r - 在 R 中替换单个反斜杠

c - 在 C 中标记电话号码

javascript - 回调函数未执行

r - 创建返回行名称和最大值的函数

c - GCC 7.2 编译共享库而不是可执行文件

java - 如何将 List<String> 作为 Intent extra 传递?

c++ - 为什么使用 void(unused) (和类似的)而不是无名参数来消除 C++ 函数中的未使用变量警告?