Этапы разработки программы. Разработка или выбор алгоритма решения поставленной задачи. Оформление документации на программу, страница 33

-  COM1 (AUX), COM2 – имена последовательных портов. Эти порты предназначены для связи с другими компьютерами и подключения дополнительных внешних устройств.

-  NUL – фиктивное внешнее устройство.

22.2 Потоки.

При работе с потоком можно производить следующие действия:

  1. Открывать и закрывать поток (связывать указатели на потоки с конкретными файлами);
  2. вводить и выводить: символ, строку, форматированные данные, порции данных произвольной длины;
  3. анализировать ошибки потокового вв/выв и условие достижения конца потока (конца файла);
  4. управлять буферизацией потока и размером буфера;
  5. получать и устанавливать указатель текущей позиции в потоке.

Открытие потока.

Прежде чем начать работать с потоком, его необходимо открыть. При этом поток связывается со структурой типа FILE. Определение структурного типа FILE находится в заголовочном файле stdio.h. В структуре FILE содержатся компоненты, с помощью которых ведется работа с потоком, в частности, указатель на буфер, указатель текущей позиции в потоке и другая информация.

Синтаксис объявления указателя на поток:

FILE *<указатель на поток>;

Пример: #include<stdio.h>

FILE *fp;

Синтаксис объявления функции открытия потока:

FILE fopen (char*<имя файла>, char*<вид обработки>);

Функция fopen – открывает поток данных, связывающий с внешним файлом, и возвращает адрес буфера ОП. Прототип функции находится в файле stdio.h

Параметры функции:

<имя файла> - первый параметр функции fopen может быть задан следующими способами:

1)строковой константой, например,

FILE*f;

f= fopen (“D:\\USES\\SAPR91\\<имя файла>.txt, <вид обработки>)

2) переменной, например, FILE *f;

char*imf= (char*)malloc(13);

printf (“Введите имя файла”);

gets (imf);

fp=fopen (imf, <вид обработки>);

<вид обработки> - второй параметр функции fopen – это строковая константа, которая может принимать одно из следующих значений;

“r” – открыть существующий файл для чтения;

“w” – открыть файл для записи, если существовал, то его содержимое стирается;

“a” – запись в конец файла, файл создается, если он не существовал;

“r+” – существующий файл открывается для чтения и записи;

“w+” – открыть файл для чтения и записи, если файл существовал, его содержимое теряется;

“a+” – открыть файл для чтения и добавления, если файл не существовал, он создается.

Если поток открыт в режиме “a” или “a+” данные всегда записываются в конец файла, хотя указатель можно всегда перенести, используя соответствия функции – при записи он всегда будет перемещаться на конец файла, т.е. данные, что были в файле, не могут быть затерты.

Если поток открыт в режимах (r+ и w+) необходимо позиционировать указатель файла.

Типы потоков.

Поток можно открыть в текстовом, либо в двоичном режиме.

В текстовом режиме прочитанная из потока комбинация символов CR (B) – возврат каретки и LF(10) – перевод строки, преобразуются в один символ новой строки ‘\n’

При записи в поток в тестовом режиме осуществляется обратное преобразование, т.е. символ новой строки ‘\n’(LF) заменяется последовательностью CR и LF.

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

При открытии потока могут возникнуть следующие ошибки:

-  указанный файл, связанный с потоком, не найден (для режима чтения);

-  диск заполнен или защищен от записи и т.п.

В перечисленных случаях указатель на поток приобретает значение NULL.

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

FILE*fp; char*imf = (char*) malloc(13);

Printf (“имя файла”); gets(imf);

f=fopen (imf, “r”);

y (f!=NULL) {<обработка файла> fclose(f):}

else printf (“Файл %S не откроется для чтения”, inf);

Способа ввода вывода в Си.

Существуют три способа ввода вывода данных вниз файла:

- прямой(неформатированный);

- символьный;