Вопрос о структуре данных файла? - PullRequest
1 голос
/ 26 марта 2011

HI, Я читаю текст C по адресу: https://cs.senecac.on.ca/~btp100/pages/content/files_p.html В тексте они упоминают о структуре данных файла в виде изображения:

enter image description here

Я не понимаю, что содержится в структуре данных файла и как она соединяется с физическим файлом? Кто-нибудь может уточнить это, пожалуйста? Спасибо.

1 Ответ

1 голос
/ 26 апреля 2011

Как указано в комментариях, вам не нужно обращаться к деталям объекта, на который указывает FILE* - используйте fread(), fgetc() и т. Д.

Если вы хотите знать, что в нем содержится, определение обычно содержится в stdio.h, но оно не будет очень информативным!

Что он делает, это обеспечивает буфер для «необработанного файла», который обозначается дескриптором файла (обычно просто int) и используется с такими функциями, как open(), read() и т. Д. Внутренние поля есть управлять буфером, позицией в файле, флагами ошибок и т. д.

Если вы используете fgetc() для чтения одного символа из файла, библиотека фактически загрузит блок данных из базового файлового дескриптора, сохранит его и вернет один символ. В следующий раз, когда вы используете fgetc(), он забирает следующий символ из своего хранилища и больше не будет обращаться к реальному файлу. Как только все символы из хранилища будут возвращены, к базовому файлу будет открыт доступ к следующему блоку. Это более эффективно, если вы хотите читать символ за символом. То же относится и к написанию с fputc().

Стоит также отметить, что дескриптор файла на самом деле не может быть файлом на диске, это может быть последовательный порт, канал или что-то еще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...