Выдать ошибку, если чтение пошло за концом файла - C (СИ)

Узнай цену своей работы

Формулировка задачи:

из файла считывается несколько строк, пускай 5 если ф файле например только 4 строки, то нужно вывести ошибку, через иф. я так понимаю должно быть что-то типа:
if (eof(fp))
...

Решение задачи: «Выдать ошибку, если чтение пошло за концом файла»

textual
Листинг программы
...
FILE * f;
char buf[BUFSIZ];
int i;
...
for ( i = 0; i < 5; ++i ){
  if ( ! fgets(buf, BUFSIZ, f) ){
    fprintf(stderr, "Unexpected end of file!\n");
    fclose(f);
    return 1;
  }
  /* обработать считанную строку */
}
...

Объяснение кода листинга программы

  1. Объявлены необходимые переменные: FILE * f; char buf[BUFSIZ]; int i;
  2. Задаётся цикл, который выполняется 5 раз: for ( i = 0; i < 5; ++i ){
  3. В каждой итерации цикла происходит проверка: считывает ли функция fgets строку из файла в буфер buf.   if ( ! fgets(buf, BUFSIZ, f) ){
  4. Если функция fgets вернула 0 (что означает, что строка не была полностью прочитана), то выводится сообщение об ошибке:     fprintf(stderr, Unexpected end of file!\n);
  5. Закрывается файл f с помощью функции fclose.     fclose(f);
  6. Возвращается 1.     return 1;
  7. После каждой итерации цикла выполняется обработка считанной строки.   / обработать считанную строку /
  8. В конце цикла переменная i выводится на экран. ...

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.273 из 5