У меня есть функция, которая читает целые числа определенного формата из файла. Он отлично работает по желанию, но всякий раз, когда я пытался закрыть файл с помощью 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)
на самом деле не в вашем коде. Покажите, пожалуйста, настоящий код. - person Keith Thompson   schedule 04.08.2012