Teg – описание структуры.
<определение типа структура с помощью тега>≡
struct <идент.>
{
<резервирование памяти>;
{ < резервирование памяти >; }
};
Пример: Определим тип элемента односвязного списка.
struct tinfo
{
float x, y;
}
struct tel //здесь tel-идентификатор типа пользователя//
{
tinfo info; //информационная часть//
tel *link; //ссылочная часть//
}
typedef tel* ptel; //теперь ptel является указателем на tel//
В Си++ вместо t^.info.x (как было в паскале) мы будем писать t->info.x.Это является обращением к записи, на которую ссылается указатель
Организация односвязного списка по принципу ссылки вперед.
Пример:
Функция ввода списка с клавиатуры
b, t, p – указатели на первый, текущий и на предшествующий элементы соответственно.
Блок – схема:
Текст программы:
void VVKL (ptel &b, int &n)
{
ptel t, p;
n=0;
do
{
t=new tel;
n++;
cout<<”Znachenie pervogo chlena? ”;
cin>>t->info.x;
cout<<” Znachenie vtorogo chlena? ”;
cin>>t->info.y;
if (n==1) b=t; else p->link=t;
p=t;
}
while (printf(“Prodolgit’ vvod? y/n? ”)&&getchar()==’y’);
t->link=NULL;
}
Файлы.
Файл – упорядоченная совокупность произвольного числа компонентов, расположенная на внешнем запоминающем устройстве, и имеющая имя, называемое физическим именем файла. В программе файлу соответствует внутреннее логическое имя файла <идент.>. На языке С файл имеет сложную организацию и рассматривается как структура.
Работа с файлами в С реализуется через буфер. В С существует два вида файлов: текстовые и бинарные (двоичные). Текстовый – это файл, содержащий текстовые данные, как правило, организованные в виде строк. По умолчанию файлы рассматриваются как текстовые.Бинарный (двоичный) – это файл, содержащий последовательность произвольных байтов. Байты состоят из бит, т.е. двоичных цифр. Текстовые файлы являются частным случаем двоичных файлов, и, таким образом, в широком значении слова под определение «двоичный файл» подходит любой файл.
Внутреннее логическое имя файла <идент.> должно быть объявлено в программе:
<резерв. памяти под указатель на буфер файла>≡FILE* <идент.>
Например:
FILE *prfl;
после объявления имя prfl будет являться указателем на некоторый файл.
Над файлами можно производить некоторые действия, такие, как открытие файла, чтение и запись, закрытие файла.
1.Прежде чем читать файл или записывать в него информацию, его необходимо открыть с помощью библиотечной функции:
<открытие файла >≡fopen(“<имя файла>; <атрибут файла>”)
атрибуты: w - чтение, r - запись, q;
значение функции – указатель на буфер.
<идент.>≡fopen (“имя файла”, “<атрибут>”); - связывает имя файла с буфером.
Для работы с существующим файлом можно использовать следующую структуру
if ((<идент.>=fopen(“<имя файла>”,”r”))!=NULL)
{
…
//работа с файлами//
…
}
else
cout<<”fayl ne nayden”<<endl;
2. После окончания работы с файлом он должен быть закрыт с помощью функции:
<закрытие файла >≡fclose(<идент>)
Она возвращает значение 0, если файл закрыт успешно, и ненулевое значение в противном случае.
Функции 1 и 2 работают с текстовыми файлами с буферизацией. Под буферизацией понимается то, что вводимые и выводимые данные запоминаются во временно области памяти, называемой буфером. Функция fclose() позволяет освободить частично заполненный буфер при закрытии файла, иначе информация может быть потеряна.
3.Функции форматированного ввода и вывода в файл имеют следующий вид: <форматированный вывод в файл>≡fprintf(<идент.>,<шаблон вывода>,<список вывода>);
<форматированный ввод из файла>≡fscanf(<идент.>,<шаблон вввода>,<список ввода>)
Действие этих функции аналогично действию функций scanf() и printf(), но здесь дополнительно вводится указатель на файл <идент.>, который в отличие от предыдущих функций используется в качестве первого аргумента.
getc(), - функция, считывающая символ из файла, на который указывает указатель чтения.
Пример:
getc()!=EOF.