gpt4 book ai didi

C语言,文件结构

转载 作者:太空宇宙 更新时间:2023-11-04 04:03:36 24 4
gpt4 key购买 nike

我正在尝试创建一个包含两个文件指针的结构。 (见下文)

    typedef struct dataFiles
{
FILE * inputSet;
FILE * outputSet;
}fData;

我希望能够使用它来使用一个函数来打开和关闭文件,我这里有一个:

    void openFiles(struct dataFiles * fiData)
{
fiData->inputSet = fopen("inputfile.txt","r");
fiData->outputSet = fopen("outputfile.txt","o");
return fiData;
}

在主函数中,我首先将结构声明为:

    fdata * fileData;

然后尝试通过以下方式访问它:

    openFiles(&fileData);

我的程序运行并编译,但我在将数据从输入文件导入结构时遇到问题,当我检查我的输出时,它全是 0。任何有关如何实现此类代码的一般提示将不胜感激。 (注意:这是一个与学校作业相关的问题,但是我已经满足了作业的要求,只是出于好奇而对此感兴趣)~谢谢!

最佳答案

声明如下:

fdata fileData; //This memory is on the stack, not the heap

内存可以在两个地方,在栈上和在堆上。栈上的内存不需要分配,你只需要获取对它的引用。因此,&fileData 将为您提供所需的指针。但是,您不能返回指向堆栈上数据的指针。因此,您需要一个指向堆的指针。要在堆中创建指向内存的指针,您可以使用所需内存的大小调用 malloc。在这种情况下,它是 malloc(sizeof(fileData))。这将返回一个 void*,您需要将其转换为 fileData*。

也改

 void openFiles(struct dataFiles * fiData)
 fData openFiles(struct dataFiles * fiData)

关于C语言,文件结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8919061/

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