Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
???????4-???_??????? ?_?????_16_11_14.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.11 Mб
Скачать

11. Файлы

11.1 Основные сведения о файлах

Файл обычно определяют как поименованный набор данных, хранимых на внешнем носителе. Язык C рассматривает любой файл как последовательный набор байтов, в котором текущий байт при вводе-выводе отмечен положением файлового курсора. В начале работы с файлом этот курсор указывает на самый первый, нулевой байт, а по мере последовательного ввода (или вывода) смещается к байту, номер которого больше текущего на количество прочитанных (или записанных) байтов. Для ускорения обмени данными с внешними запоминающими устройствами каждому открытому файлу выделяется в оперативной памяти буфер для ввода и/или вывода. При вводе данных в буфер единовременно заполняется требуемой порцией байтов из файла (при последовательном доступе это позволит значительно реже обращаться к внешнему устройству, что особенно важно для дисковых устройств), а при выводе также уменьшается количество обращений к внешнему устройству, так как обычно вывод выполняется только после заполнения буфера. При открытии файла ему ставится в соответствие поток. В начале выполнения программы автоматически открываются три файла и связанные с ними потоки – стандартный ввод, стандартный вывод и стандартная ошибка. Потоки обеспечивают каналы передачи данных между файлом и программой. Стандартный поток ввода позволяет программе считывать данные с клавиатуры, а стандартные потоки вывода и ошибок позволяет выводить данные на экран. Для начала работ с прочими файлами необходимо явно выполнять открытие, а при завершении работ с файлом - его закрытие.

Функция, открывающая файл, возвращает указатель типа FILE (определяется в заголовочном файле <stdio.h>). Этот указатель следует присвоить переменной соответствующего типа (называемой файловой переменной или указателем файла), которая и будет представлять в дальнейшем файл во всех библиотечных функциях работы с ним, в том числе и в функции закрытия файла.

В языке C различают файлы двух типов – текстовые и бинарные.

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

Бинарные файлы представляют собой последовательность элементов определенного типа и, следовательно, определенного размера, причем компоненты такого файла хранятся в двоичном коде, т.е. выводятся из оперативной памяти в файл без преобразования к символьному виду. Поэтому для бинарных файлов ввод и вывод данных выполняется быстрее, чем для текстовых файлов.

Следует заметить, что работа с текстовыми файлами возможно только в режиме последовательного доступа, т.е. чтобы получить доступ к очередной строке файла или её части, надо считать всё, что им предшествует.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]