微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在C中将数组从主要函数传递给其他函数

如何解决在C中将数组从主要函数传递给其他函数

我在主函数中初始化了一个动态的字符串数组,但是我不确定如何正确使用指针并将数组发送给函数。在function_w中,我要使用数组,然后将其发送回主函数,然后再用于其他函数。 这是我的代码

covr::package_coverage(
    type = "none",code = "testthat::test_package(
'myPackage',reporter = testthat::JunitReporter$new(file = 'test-results.xml')
)")

每次我使用function_w时都没有输出。你能帮我吗?

解决方法

  • 要让函数修改所传递的内容,请将指针传递给应修改的内容。在这种情况下,应该修改的是char**,所以指向它的指针是char***
  • function_w的调用者将需要信息strcount,因此您应该返回该信息。
  • 您不需要指向FILE*的指针,因为您无需对其进行修改。

应用这些,您的程序应如下所示:

int function_w(char ***array,FILE *fr)
{
    int i = 0,strcount = 0;
    int buf_length = 50; 
    char buf [buf_length],p = NULL;
    fseek(fr,SEEK_SET);

    while (fgets(buf,buf_length,fr) != NULL)
    {
        *array = realloc(*array,(strcount + 1) * sizeof(char *));
        (*array)[strcount++] = strdup(buf);
    }
    return strcount;
}

int main(void)
{   
    char **array = NULL;
    FILE*fr = NULL; //file is opened in other function,before calling w
    int strcount;
...
    if (fr != NULL) strcount = function_w(&array,fr);
    else printf("Error");
    return 0;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。