【发布时间】:2018-05-12 21:27:32
【问题描述】:
我想创建一个打开文件的函数,然后其他函数使用这个打开的文件。这是我的代码,
#include <stdio.h>
int openFile(FILE* inputFile)
{
inputFile = fopen("input.txt", "r");
if (inputFile != NULL)
return 0;
else
return -1;
}
void readWholeFile(FILE* inputFile)
{
char str[20];
while (feof(inputFile)) {
fscanf(inputFile, str);
printf("%s\n", str);
}
}
int main() {
FILE* inputFile;
if (openFile(inputFile) == 0) {
readWholeFile(inputFile);
}
else
printf("File didn't open");
fclose(inputFile);
return 0;
}
“文件未打开”未打印,因此应打开文件,但实际上 readWholeFile 不打印任何内容,因为文件将为空。有什么问题?
【问题讨论】:
-
FILE* inputFile: 您正在丢失文件句柄,仅在本地分配。* -
所以
FILE*是你的函数的结果。为什么(以及如何)将它作为参数传递?你为什么不直接从函数中return呢?
标签: c