Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
programmirovanie / ОПиАЯ_№3_9_файлы.doc
Скачиваний:
31
Добавлен:
03.03.2016
Размер:
105.47 Кб
Скачать

3.8 Файлы

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

Логические устройства это специальные системные имена, которые даны стандартным аппаратным средствам компьютера: клавиатуре, экрану, принтеру, коммуникационным каналам ввода/вывода (например, prn — логическое имя принтера).

Атрибуты файла

1.Имя файла.

2. Он состоит из однотипных компонентов (их тип любой, кроме файлового и объектного).

3. Длина файла. Она неизвестна, не задается при объявлении, а ограничена лишь емкостью внешнего устройства.

Имя файла — это строковое данное (переменная или константа), состоящее не более чем из восьми символов: прописных и строчных латинских букв, цифр и символов ! ^ $ % & / ( ) — @ '-'. Начинается с любого разрешенного символа1(Запрещены имена 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). При выполнении очередной операции передачи данных файловый указатель (по-другому файловый указатель называют маркер файла, стрелка файла! даже окно.)перемещается (в случае последовательного доступа) к компоненту с номером 1 и т. д. Величина шага приращения определяется размером компоненты. В случае прямого доступа файловый указатель смещается к компоненте с заданным номером компоненты.

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

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

Типы файлов:

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

в СИ 256 символов)

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

При работе с одинаковыми данными

Передача Назначение Скорость Длина

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

компонент

Дво- обмен данными для хранения

ичные без преобразова- данных на

ния диске

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

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

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

во внутренний и ставление выход-

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

типов)

Соседние файлы в папке programmirovanie