【发布时间】:2012-08-04 03:47:03
【问题描述】:
我有一个函数可以从文件中读取特定格式的整数。 它可以按需要正常工作,但是每当我尝试使用 fclose() 关闭文件时, fclose() 总是返回 EOF。
有什么建议吗?我是学生,还在学习。 我把代码放在下面。如果您需要“处理”代码,请告诉我。谢谢:)
// Open the file
FILE *myFile = fopen(fileName, "r");
if(myFile == NULL){
//Handle error
fprintf(stderr, "Error opening file for read \n");
exit(1);
}
while(myFile != EOF)
{
// read and process the file
// this part works.
}
// always returns EOF here. WHY?
if (fclose(myFile) == EOF) {
// Handle the error!
fprintf(stderr, "Error closing input file.\n");
exit(1);
}
printf("Done reading the file.");
编辑: 谢谢大家的回复。抱歉,我无法发布代码,因为这是我作业的一部分。我试图获得一些帮助,我并不是要你们为我编写代码。根据我的教授的说法,发布代码是非法的(因为其他学生可以看到并可能复制,这就是他告诉我的)。我只能在周日之后发布代码。现在,我将尝试修改我的代码并避免使用 fscanf。谢谢,我很抱歉。
【问题讨论】:
-
这个:
while (myFile != EOF)是错误的。myFile是一个指针;EOF的类型为int。比较它们几乎肯定会产生一个编译器诊断,你绝对不应该忽略它——而且很可能会导致无限循环。这让我觉得while (myFile != EOF)并不是真的在你的代码中。请给我们看真实的代码。 -
@keithThompson 在我的代码中,它可以正常工作,很奇怪。但是我刚刚将其更改为 while(!feof(myFile)) (在看到您的评论后)。谢谢
-
@KeithThompson 实际上是问题所在!该代码可以正常工作。您可以将您的评论发布为帖子,以便我将其标记为答案吗?谢谢