gpt4 book ai didi

c - 返回一个文件数组

转载 作者:太空宇宙 更新时间:2023-11-04 07:02:05 25 4
gpt4 key购买 nike

我正在尝试创建一个返回文件数组的函数,但我找不到在函数外部访问该数组的方法。这是我尝试过的:

FILE* *arquivoescrita(int k) //gerar nome de arquivo
{
char filename[sizeof("file1000000000000.txt")];
static FILE* arquivos[2];
for (int i = k; i < k+2; ++i)
{
sprintf(filename, "file%d.txt", i);
arquivos[i] = fopen(filename,"r");
}
return arquivos;

}

我像这样调用 main 中的函数:

FILE* psaidas[2];
psaidas = arquivoescrita(0);

我得到的错误是

error: array type 'FILE *[2]' is not assignable
psaidas = arquivoescrita(0);

如何访问这种数组?

最佳答案

您正在返回一个指向静态数组的指针。没关系。但是 C 不会神奇地将数组复制到另一个位置。您可以更改声明:

FILE**psaidas;
psaidas = arquivoescrita(0);

这会奏效。但此时,psaidas 将指向您的 static FILE * 数组。因此,如果您再次调用 arquivoescrita,它将被覆盖。

如果可行 - 并且它可能会可行 - 然后继续。如果您不得不担心在完成文件之前多次调用 arquivoescrita,那么您必须使用 malloccallocarquivoescrita 中动态分配您的结果,或者您可以选择在收到数组后复制数组:

FILE * psaidas[2];

memcpy(psaidas, arquivoescrita(0), sizeof(psaidas));

关于c - 返回一个文件数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36830297/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com