如何解决在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 举报,一经查实,本站将立刻删除。