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’.

Пример:

 
  D:>\STUDUSER\1057\IVANOV-P\in.Dat - student2.ru

D:>\STUDUSER\1057\IVANOV-P\in.Dat - student2.ru Работаем в TURBO-C < newline >

D:>\STUDUSER\1057\IVANOV-P\in.Dat - student2.ru D:>\STUDUSER\1057\IVANOV-P\in.Dat - student2.ru Открыли файл < newline > < eof >

­ на экране монитора

 
  D:>\STUDUSER\1057\IVANOV-P\in.Dat - student2.ru

Работаем в TURBO-C<newline>открыли файл<newline><eof>

D:>\STUDUSER\1057\IVANOV-P\in.Dat - student2.ru

­ на НМД

Непрерывный поток данных ( симв. кодов)

- источник данных или поток ввода ( input stream );

- приемник данных или поток вывода (output stream ).

Терминология применима к файлам, клавиатуре, экрану и др. источниам и приемникам ввода – вывода.

D:>\STUDUSER\1057\IVANOV-P\in.Dat - student2.ru D:>\STUDUSER\1057\IVANOV-P\in.Dat - student2.ru Текстовые потоки

текстовые

- stdin – поток ввода с клавиатуры

Файлы - stdout - поток вывода на экран

- stderr - поток “ошибок”

D:>\STUDUSER\1057\IVANOV-P\in.Dat - student2.ru D:>\STUDUSER\1057\IVANOV-P\in.Dat - student2.ru

Для вывода символов на экран используются функции printf, putchar,

для ввода

Getchar, scanf.

Любые другие файлы и логические устройства станут известны компилятору только после выполнения процедуры открытия файла (логического устройства). Она заключается в установлении связи файловой переменной с именем существующего или создаваемого файла и в указании направления передачи данных: чтение из файла или запись в него.

В результате специальная переменная-указатель, связанная с файлом, позиционируется на начало файла, т.е. на компонент с порядковым номером 0. При выполнении очередной операции передачи данных файловый указатель (по-другому файловый указательназывают маркер файла, стрелка файла! даже окно.) перемещается (в случае последовательного доступа) к компоненту с номером 1 и т. д. Величина шага приращения определяется размером компоненты. В случае прямого доступа файловый указатель смещается к компоненте с заданным номером компоненты.

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

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

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

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

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

Типы файлов:

- текстовые ( последовательность символов, разбитой на строки; в СИ 256 символов)

- двоичные (последовательность значений типа char в двоичном формате)

D:>\STUDUSER\1057\IVANOV-P\in.Dat - student2.ru D:>\STUDUSER\1057\IVANOV-P\in.Dat - student2.ru При работе с одинаковыми данными

D:>\STUDUSER\1057\IVANOV-P\in.Dat - student2.ru D:>\STUDUSER\1057\IVANOV-P\in.Dat - student2.ru D:>\STUDUSER\1057\IVANOV-P\in.Dat - student2.ru D:>\STUDUSER\1057\IVANOV-P\in.Dat - student2.ru D:>\STUDUSER\1057\IVANOV-P\in.Dat - student2.ru Передача Назначение Скорость Длина

компонент файла передачи файла

D:>\STUDUSER\1057\IVANOV-P\in.Dat - student2.ru компонент

D:>\STUDUSER\1057\IVANOV-P\in.Dat - student2.ru

D:>\STUDUSER\1057\IVANOV-P\in.Dat - student2.ru Дво- обмен данными для хранения > <

D:>\STUDUSER\1057\IVANOV-P\in.Dat - student2.ru ичные без преобразова- данных на

ния диске

       
  D:>\STUDUSER\1057\IVANOV-P\in.Dat - student2.ru
 
    D:>\STUDUSER\1057\IVANOV-P\in.Dat - student2.ru

Тексто- Сопровождается для чтения чело-

вые преобразованием веком (содержит

из символьного строковое пред- < >

D:>\STUDUSER\1057\IVANOV-P\in.Dat - student2.ru D:>\STUDUSER\1057\IVANOV-P\in.Dat - student2.ru во внутренний и ставление выход-

наоборот ных данных всех

D:>\STUDUSER\1057\IVANOV-P\in.Dat - student2.ru типов)

Наши рекомендации