Функция 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); }
Объяснение кода листинга программы
- Подключение необходимых библиотек: iostream.h, stdlib.h, limits.h
- Объявление функции main()
- Объявление переменных: file (указатель на файл), offset (долгое число)
- Открытие файла с помощью функции fopen()
- Инициализация переменной offset значением LONG_MAX-10
- Установка позиции чтения в файле на значение offset с шагом 10 с помощью функции fseek()
- Проверка позиции чтения в файле с помощью функции ftell()
- Закрытие файла с помощью функции fclose()
- Выход из программы с помощью функции exit()
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д