Проблемы начинаются задолго до fclose
. Эта строка неверна:
filePTR = fopen_s(&filePTR, "text.txt", "r");
Она перезаписывает указатель файла, уже назначенный путем передачи указателя в качестве аргумента функции &filePTR.
Функция возвращает состояние ошибки, а не указатель файла. См. Справочную страницу :
Возвращаемое значение Ноль в случае успеха; код ошибки при ошибке.
Также, пожалуйста, смотрите Почему while ( !feof (file) )
всегда неверен?
Я предлагаю это:
#include <stdio.h>
#include <stdlib.h>
int main(void) { // correct definition
FILE *filePTR;
char fileRow[100];
if(fopen_s(&filePTR, "text.txt", "r") == 0) {
while(fgets(fileRow, sizeof fileRow, filePTR) != NULL) {
printf("%s", fileRow); // the string already contains a newline
}
fclose(filePTR); // only close if it was opened
printf("\nEnd of file.");
}
else {
printf("ERROR! Impossible to read the file.");
}
return 0;
}
Обратите внимание, что я переместил вызов fclose
. Вы не можете закрыть файл, который вы не открыли.