Когда я открываю файл, мне нужно искать начало?

Я просматривал документацию fopen и ifstream и не могу найти, нужно ли мне искать начало файла после его открытия. Я думаю, что могу предположить, что мне это не нужно, и эксперименты, которые я провел, подтверждают эту гипотезу, но я считаю, что безопаснее проверить.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
4
0
121
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Вам не нужно искать, так как чтение начнется с начала файла по умолчанию.

Спасибо за ответ. У вас есть ссылка?

bers 12.12.2022 13:32

Это не всегда так. При открытии в режиме a или a+ указатель файла устанавливается на конец файла.

Bart Friederichs 12.12.2022 13:34

В разделе 7.9.13 C99 говорится: «Если файл может поддерживать запросы на позиционирование (например, файл на диске, а не на терминале), то индикатор позиции файла, связанный с потоком, располагается в начале (число символов ноль) файла, если только файл не открывается в режиме добавления, и в этом случае реализация определяет, будет ли индикатор позиции файла изначально расположен в начале или в конце файла».

pmacfarlane 12.12.2022 13:39

https://en.cppreference.com/w/c/io/fopen

говорит, что это зависит от режима, в котором вы открываете файл. Например, если это «добавить» -- указатель устанавливается в EOF.

Для объектов fstream это зависит от openmode (который для ifstream по умолчанию равен in). Для stdio это зависит от параметра режима, переданного в fopen.

Из https://en.cppreference.com/w/cpp/io/basic_filebuf/open

Так что для файла открытого для "r"/in ответ - нет, искать в начало не нужно. Ясно, что нет смысла начинать с какого-либо другого места в файле, открытом только для чтения.

Ответ принят как подходящий

Нет, индикатор исходной позиции файла будет располагаться в начале файла.

Согласно 7.21.3 Файлы, пункт 1 (черновика) стандарта C11 (выделено мной):

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

Обратите внимание, что если файл открыт в режиме добавления, начальная позиция определяется реализацией.

unless the file is opened with append mode in which case it is implementation-defined whether the file position indicator is initially positioned at the beginning or the end of the file.
Martin 12.12.2022 13:58

@ Мартин Действительно. Я добавлял это, когда вы комментировали.

Andrew Henle 12.12.2022 13:59

Другие вопросы по теме