zHz00 Untitled

вторник, 11 июня 2024
03:23 Файловый указатель: какую я придумал аналогию
В Питоне я предпочитаю файл сразу считывать в память, а уже потом с ним работать. То же и при записи: сначала готовлю содержимое, потом его сразу пишу.

Но файл может быть большим, по нему надо ползать, что-то считывать и что-то записывать не по порядку. В Си для этого есть fseek. В Си++ есть seekp/seekg. В Питоне тоже есть seek.

В детстве я плохо понимал смысл файлового указателя. Вот же он:

FILE *f;

Но это не тот указатель.

Файловый указатель, управляемый функциями типа fseek, обозначает позицию для следующих записи/считывания. Как же это об'яснить студентам, с учётом того, что я сам этого долго не понимал?

Сейчас я полагаю, что лучшая аналогия -- это курсор. Любой современный человек, пользующийся хотя бы смартфоном, понимает, что такое курсор. И интуитивно понятно, что запись в файл происходит в положение курсора. Чтение тоже происходит из положения курсора.

Несколько сложнее понять, что при чтении и записи курсор автоматически сдвигается.

Ещё сложнее понять, что при записи в середину фалйа, а не в конец, происходит перезаписывание содержимого. Это то же самое, что режим курсора overwrite, хотя о нём знают не все.

Но изначально я писал не просто про файловый указатель, а про функции типа fseek. И вот каково об'яснение их назначения:

Функции fseek занимаются ничем иным, как установкой положения курсора -- от начала, от конца файла, или относительно текущего положения. Вот и всё.

@темы: Программирование, Студенты

URL
http://www.newgrounds.com/portal/content.php?id=50323 Ж...
Кто знает нормальные маршруты в горы, чтоб людей (местых ...
Завтра буду весь день в Майу врываться, зави-и-и-и-дуйте ...
http://zone.msn.com/bejeweled
Мастер Игры масок осознает всю их их нереальность и иллюз...
Рыба, которая не хочет быть такой, как все рыбы, выбрасыв...

11.06.2024 в 15:42

11.06.2024 в 15:42
И часто тебе приходится писать в тот же файл, из которого читаешь?
URL
Добавить комментарий

Расширенная форма

Подписаться на новые комментарии
Получать уведомления о новых комментариях на E-mail