Функция fseek() не возвращает ошибку при достижении конца файла - C (СИ)

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

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

Люди скажите может кто знает! Почему функция fseek() не возвращает ошибку при достижении конца файла??? Вот программа!
#include <stdio.h>
main()
{
        FILE *fp;
    long offset = 0L;
    char c;
 
        if ((fp=fopen("data","r")) ==0)
            printf("ja ne mogu otkrytj fajl %s.\n","data");
        else
            {
            while( fseek(fp,offset++,0)==0 )
               putchar(c=getc(fp));//  И тут пошло зацыкливание!!!
            fclose(fp);
            }
}

Решение задачи: «Функция fseek() не возвращает ошибку при достижении конца файла»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
 
int main(void) /* ANSI C89 */
{
    FILE *file;
    long offset;
    
    file = fopen("file.txt", "r");
    
    offset = LONG_MAX-10;
    
    while (fseek(file, offset++, 0) == 0)
        ;
    
    printf("%ld" "\n", offset);
    
    printf("%ld" "\n", ftell(file));
    
    fclose(file);
    
    exit(EXIT_SUCCESS);
}

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

  1. Подключение необходимых библиотек: iostream.h, stdlib.h, limits.h
  2. Объявление функции main()
  3. Объявление переменных: file (указатель на файл), offset (долгое число)
  4. Открытие файла с помощью функции fopen()
  5. Инициализация переменной offset значением LONG_MAX-10
  6. Установка позиции чтения в файле на значение offset с шагом 10 с помощью функции fseek()
  7. Проверка позиции чтения в файле с помощью функции ftell()
  8. Закрытие файла с помощью функции fclose()
  9. Выход из программы с помощью функции exit()

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


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

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

12   голосов , оценка 4.167 из 5
Похожие ответы