【发布时间】:2012-01-18 23:28:35
【问题描述】:
我正在尝试创建一个包含两个文件指针的结构。 (见下文)
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。任何有关如何实现此类代码的一般提示将不胜感激。 (注:这是一个与学校作业有关的问题,不过,我已经满足了作业的要求,只是出于自己的好奇而对此感兴趣)~谢谢!
【问题讨论】:
-
您的编译器应该抱怨(至少是警告)您发布的代码中的至少两件事 - 尝试为
void函数返回非 void 表达式并传递错误类型的指针到openFiles()。更不用说fileData声明中的错字了。 -
作为旁注,除非您只打开一个 ascii 文件,否则您应该将“b”标志添加到 fopen。即使用
fopen(filename, "rb")。不同之处在于,如果没有它,您将在文件早期获得 EOF。 -
你的程序编译时没有警告吗?提示:永远不要忽略编译器警告!
-
如果您从命令行编译,请添加标志
-Wall。例如。gcc -Wall -o out file.c
标签: c computer-science codeblocks