D:>\STUDUSER\1057\IVANOV-P\in.Dat
ФАЙЛЫ
Под файлом понимают либо логическое устройство — источник или приемник текстовой информации, либо именованную область внешней памяти (винчестера, дискеты).
Логические устройства — это специальные системные имена, которые даны стандартным аппаратным средствам компьютера: клавиатуре, экрану, принтеру, коммуникационным каналам ввода/вывода (например,prn — логическое имя принтера).
Атрибуты файла
1.Имя файла.
2. Он состоит из однотипных компонентов (их тип любой, кроме файлового и объектного).
3. Длина файла. Она неизвестна, не задается при объявлении, а ограничена лишь емкостью внешнего устройства.
Имя файла — это строковое данное (переменная или константа), состоящее не более чем из восьми символов: прописных и строчных латинских букв, цифр и символов ! ^ $ % & / ( ) — @ '-'. Начинается с любого разрешенного символа
(Запрещены именаaux, comi,com2, com3, con, Ipti, lpt2,lpt3, nul и prn. MS DOS понимает их как имена логических устройств.).
За именем может следовать расширение. Оно отделяется от имени точкой и содержит до трех разрешенных символов.
Использование расширения удобно, если оно описывает содержимое файла (например, dat — от data, txt— от text и пр.). Прописные и строчные буквы и в имени, и в расширении не различаются. Перед именем файла можно указать путь к файлу: имя диска, имя корневого каталога (папки) и имена подкаталогов, например:
D:>\STUDUSER\1057\IVANOV-P\in.dat
Если путь не указан, то подразумевается, что файл находится в текущем каталоге.
Каждой программе доступны два предопределенных файла со стандартными файловыми переменными. [файловая переменная освобождает нас от необходимости знания технической организации обмена данными между аппаратными средствами компьютера, так как программа работает не с конкретными физическими устройствами, а с их образами в виде файловых переменных. При этом каждой такой переменной ставится в соответствие физический файл — именованная область памяти на каком-либо носителе информации. Аналогами файловой переменной (Паскаль) являются указатель на файл (Си) и номер устройства ввода/вывода или имя (внешнего) устройства (Фортран)].
Символ конца файла помещается в конце текстового файла
< EOF > ( end-of-file)
< eof >
при создании текстового файла нажимаем (< return >)
< enter > Þ вставляется символ новой строки newline в СИ представлен ‘\n’.
Пример:
Работаем в TURBO-C < newline >
Открыли файл < newline > < eof >
на экране монитора
Работаем в TURBO-C<newline>открыли файл<newline><eof>
на НМД
Непрерывный поток данных ( симв. кодов)
- источник данных или поток ввода ( input stream );
- приемник данных или поток вывода (output stream ).
Терминология применима к файлам, клавиатуре, экрану и др. источниам и приемникам ввода – вывода.
Текстовые потоки
текстовые
- stdin – поток ввода с клавиатуры
Файлы - stdout - поток вывода на экран
- stderr - поток “ошибок”
Для вывода символов на экран используются функции printf, putchar,
для ввода
Getchar, scanf.
Любые другие файлы и логические устройства станут известны компилятору только после выполнения процедуры открытия файла (логического устройства). Она заключается в установлении связи файловой переменной с именем существующего или создаваемого файла и в указании направления передачи данных: чтение из файла или запись в него.
В результате специальная переменная-указатель, связанная с файлом, позиционируется на начало файла, т.е. на компонент с порядковым номером 0. При выполнении очередной операции передачи данных файловый указатель (по-другому файловый указательназывают маркер файла, стрелка файла! даже окно.) перемещается (в случае последовательного доступа) к компоненту с номером 1 и т. д. Величина шага приращения определяется размером компоненты. В случае прямого доступа файловый указатель смещается к компоненте с заданным номером компоненты.
Перед завершением работы программы следует прервать связь между файлом и программой, т.е. другими словами, файл нужно закрыть. Тогда все данные, имевшиеся в буфере, будут переданы в файл. Дело в том, что пересылаемые данные всегда сначала поступают во внутренний буфер файла и только после заполнения буфера они передаются на диск, принтер, экран или назначаются в качестве значений переменных. Если выполнение программы заканчивается до закрытия файла, то часть данных может остаться в буфере и в результате будет утеряна.
Кроме того, не будет записан специальный признак — символ конца файла, значит, в другой раз программа не сможет получить доступ к файлу. Без закрытия файла буфер можно очистить с помощью процедуры выталкивания данных.
Файлы бывают двух типов — текстовые и двоичные. Передача компонентов текстового файла всегда сопровождается их преобразованием из символьного представления во внутреннее и наоборот — из внутреннего в символьное.
При обработке двоичного файла обмен данными выполняется без преобразования: при записи в файл копируется содержимое ячеек оперативной памяти, а при чтении последовательность байтов двоичного файла переносится в ячейки оперативной памяти, зарезервированные под элементы ввода.
Текстовый файл предназначен для чтения человеком (он содержит строковое представление выходных данных всех типов), а двоичный — для хранения на диске данных, которые потребуются в процессе выполнения программы. Передача компонентов двоичного файла происходит быстрее и такой файл, как правило, имеет меньшую длину, чем текстовый файл с теми же данными.
Типы файлов:
- текстовые ( последовательность символов, разбитой на строки; в СИ 256 символов)
- двоичные (последовательность значений типа char в двоичном формате)
При работе с одинаковыми данными
Передача Назначение Скорость Длина
компонент файла передачи файла
компонент
Дво- обмен данными для хранения > <
ичные без преобразова- данных на
ния диске
Тексто- Сопровождается для чтения чело-
вые преобразованием веком (содержит
из символьного строковое пред- < >
во внутренний и ставление выход-
наоборот ных данных всех
типов)