Процедурное программирование на языке С. Часть 3. Файлы и структуры: Методические указания к лабораторным работам по курсам «Алгоритмические языки и программирование» и «Процедурное программирование», страница 8

·  1-е  поле i-ой структуры – наименование i-ой базы, это символы, записанные после символов    "БАЗА_" до пробела;

·  2-ое поле – адрес участка памяти, где следует хранить назначение i-ой базы: набор символов (без управляющих), записанных после наименования базы до слова "Поставка";

·  3-е  поле – стоимость годового ежемесячного обновления i-ой базы, которая соответствует цифрам, записанным после  символа " Ежемесячно:" до первого символа ‘/’;

·  4-е  поле – стоимость годового еженедельного обновления i-ой базы, которая соответствует цифрам, записанным после  символа "Еженедельно:" до первого символа ‘/’; если символы "Еженедельно:" отсутствуют в тексте – информации об i-ой базе, – то в 4-ом поле записать 0.

Перебрав значения 4-ых полей всех структур, вывести в файл   name7-25.out всю информацию о базах (наименование, назначение и стоимости обновлений), которые обновляются и ежемесячно, и еженедельно. 

Пример файла name7-25.txt

БАЗА_1/A Нормативные акты Российской Федерации

     всем отраслям права

  Поставка: $600

  Обновление: (оплата в USD за 12/6/3 месяцев)

     Ежемесячно: 300/190/120

     Еженедельно: 450/290/180

БАЗА_1/B Судебная практика

  Поставка: $140

  Обновление: (оплата в USD за 12/6/3 месяцев)

     Ежемесячно: 120/85/55

БАЗА_1/C Арбитражная практика

  Поставка: $140

  Обновление: (оплата в USD за 12/6/3 месяцев)

     Ежемесячно: 120/85/55

БАЗА_2/A Нормативные акты Москвы

  Поставка: $250

  Обновление: (оплата в USD за 12/6/3 месяцев)

     Ежемесячно: 190/130/80

     Еженедельно: 200/130/80

БАЗА_3/A Нормативные акты Московской области

  Поставка: $150

  Обновление: (оплата в USD за 12/6/3 месяцев)

     Ежемесячно: 160/105/65

     Еженедельно: 200/130/80

БАЗА_1/Z Нормативные акты России в последней (текущей)

      редакции (по списку)

  Поставка: $120

  Обновление: (оплата в USD за 12/6/3 месяцев)

     Ежемесячно: 80/50/35

БАЗА_1/E Научно-практический комментарий (картотека)

  Поставка: $60

  Обновление: (оплата в USD за 12/6/3 месяцев)

     Ежемесячно: 60/40/25

БАЗА_4/G  Научно-практический комментарий эконо-

     мического законодательства (еженедельник "Экономика и жизнь")

  Поставка: $190

  Обновление: (оплата в USD за 12/6/3 месяцев)

     Ежемесячно: 160/105/65

     Еженедельно: 200/130/80


ТЕОРЕТИЧЕСКИЙ   МАТЕРИАЛ

7.1. ОСНОВЫ  ФАЙЛОВОЙ СИСТЕМЫ

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

В.В. Подбельский [1], объясняя различие между файлом и потоком, дает следующее определение: «поток – это файл вместе с предоставляемыми средствами буферизации».

Поскольку  функции из библиотеки <stdio.h>, предназначенные для работы с файлами, в качестве аргументов имеют адреса потоков, работа с файлом предполагает связывание этого файла с неким потоком. Поток, с помощью которого будет осуществляться в программе обмен данными с одним или несколькими файлами, должен быть объявлен. Синтаксическая форма оператора объявления потока :

FILE * < имя указателя на поток>;

Например, после объявленияFILE * fp  ;  –  указатель fp  идентифицирует поток во всех последующих операторах программы.

Операция связывания файла  с потоком осуществляется при помощи библиотечной функции fopen() , ее заголовок:   

FILE *fopen(char * pathname, char * type).

Функция fopen() открывает файл, имя и местоположение на диске которого  задается в строке pathname. Символы в строке type определяют режим доступа к файлу.