Файл и файловая система

Else

{ if (Len(wrd)>0)

{ Pri(wrd); CountWord++; }

Clr(wrd);

}

}

printf("Count Word = %i.\n", CountWord);

printf("Simbols = %i.\n", Len(st));

getch();

}

Для полноценной работы со строками необходимо использовать специализированные библиотеки функций, например <string.h>.

4.4. Сложный тип данных – структура

Очень часто в практике программирования необходимо работать с объектами, имеющими несколько параметров, причем все они могут быть разных типов. Для таких объектов в языке C++ предусмотрен тип данных под названием – структуры.

Сначала объявляется шаблон структуры:

struct <имя шаблона>

{ <тип> <имя переменной 1>;

<тип> <имя переменной 2>;

.......................;

}

Например, опишем тип под названием «студент»:

struct student

{ char fam[20];// фамилия студента

char name[15];// имя студента

long phone;// номер телефона

int kurs;// номер курса

}

Затем объявляется массив переменных типа student:

struct student MOAIS[24];

struct student IS[25];

В структуре возможен прямой доступ к полю структуры:

strcpy(IS[3].name,"Viktor");

MOAIS[17].phone=341698;

Инициализацию структуры можно выполнять одновременно с объявлением:

struct student MOTS[17]=

{{"Petrova", "Elena", 411682,1}

{"Demidov", "Fedor", 341672,4}

{"Safronov","Nikita",421951,3}

{"Dolgova", "Irina", 563074,1}};

При выполнении программы доступ к отдельным полям структуры выполняется селектором класса - "." (точка):

int Count=0;

for (int i=0;i<n;i++)

if (MOTS[i].kurs==3) Count++;

cout<<"Кол.студентов 3-го курса МОТС="<<Count<<endl;

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

 

4.5. Сложный тип данных – файлы

Главная проблема в системах обработки данных – это методы эффективного доступа к данным. Хранение больших объемов данных требует их структуризации как способа быстрого доступа к данным. Такие возможности предоставляют файловые системы. Они являются базовой основой систем обработки данных. Соответственно, инструментальные системы, в том числе и языки программирования, имеют соответствующие наборы операторов для работы с файлами. Файловая система – это совокупность файлов и набора специальных программ, регулирующих и обеспечивающих доступ к файлам.

Файл - это именованная область памяти на внешнем носителе для хранения информации. Содержимое файла представляет собой последовательность двоичных элементов. Эта последовательность при обработке может интерпретироваться как данные того или иного типа.

Замечательным свойством файлов является теоретическая неограниченность их размеров, ограничение только аппаратное. Обычно файлы размещаются на дисковых носителях. Их местоположение на дисках определяется особенностями файловых систем, например таблицами FAT в системах FAT16 или FAT32. Как правило, язык программирования С++ не делает различий между файлами на дисках и устройствами ввода-вывода, т.е. получение данных в виде файла может производиться и с других устройств, например с клавиатуры.

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

1. CON – консоль (клавиатура и экран);

2. LPT1 – параллельный порт типа Centronix;

3. PRN – принтерный параллельный порт;

4. COM1, COM2 – последовательный порт типа RS-232;

5. NUL – фиктивное устройство;

В языке программирования С++ файловая система является двухуровневой, имеется уровень логических файлов и уровень физических файлов. Логический файл описывается как переменная файлового типа. Она применяется для связи с физическим файлом, находящемся на диске. И, таким образом, логический файл выполняет роль заместителя физического файла.

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

Работа с данными, расположенными в файлах, имеют следующие особенности:

а) Файлы расположены, как правило, на внешних носителях.

б) Файлы не имеют фиксированной длины, т.е. в процессе работы размер файлов может измениться.

в) Файл может иметь нулевой размер, т.е. может быть пустым.

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

д) По внутренней структуре файлы делятся на два вида: текстовые и бинарные.