Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Метод_ПСРВ.doc
Скачиваний:
26
Добавлен:
12.02.2016
Размер:
1.6 Mб
Скачать

1.2. Файл input.C

/* данная программа производит создание файла, содержащего stud_num записей, каждая из которых включает информацию о: фамилии студента, группе, в которой обучается студент, и его оценке по одному из предметов*/

# include <sys/types.h>

# include <unistd.h>

# include <fcntl.h>

# include <stdio.h>

# include <malloc.h>

# include <process.h>

int stud_num; // количество студентов

int i; // временная переменная

int Handle; // дескриптор файла

long FSize; // размер файла (байт)

char FName[15]; // имя файла

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

int stud_group; // группа

int stud_mark;}; // оценка

struct stud *Buffer; // буфер для хранения записей

int main ()

{printf ("\n PID текущего процесса равен: %i", getpid());

printf ("\n Введите количество студентов: ");

scanf ("%i", &stud_num);

printf ("\n Резервирование памяти в размере %i байт...", stud_num*sizeof(struct stud));

if ((Buffer=(struct stud*) malloc (stud_num*sizeof(struct stud)))==NULL)

{printf ("\n Не хватает памяти. Программа завершена с кодом возврата –1");

exit (-1);}

for (i=0;i<stud_num;i++)

{printf ("\n\n Введите информацию о %i студенте из %i\n", i+1, stud_num);

printf ("Введите имя студента: ");

scanf ("%s", &(Buffer[i].stud_surname));

printf ("Введите номер группы студента: ");

scanf ("%i", &(Buffer[i].stud_group));

printf ("Введите оценку студента: ");

scanf ("%i", &(Buffer[i].stud_mark));}

printf ("\n Заполнение базы данных завершено!");

printf ("\n\n Введите имя файла для сохранения базы данных: ");

scanf ("%s", &FName);

if ((Handle = open (FName, O_RDWR|O_CREAT))==-1)

{printf ("\n Выходной файл не может быть создан. Программа прервана.");

exit (-1);}

write (Handle, Buffer, stud_num*sizeof(struct stud));

close (Handle);}

1.3. Файл output.C

/* данная программа производит чтение файла, содержащего базу данных, и вывод его на экран*/

# include <fcntl.h>

# include <sys/types.h>

# include <unistd.h>

# include <stdio.h>

# include <malloc.h>

# include <process.h>

int stud_num; // количество студентов

int i; // временная переменная

int Handle; // дескриптор файла

long FSize; // размер файла (байт)

char FName[15]; // имя файла

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

int stud_group; // группа

int stud_mark;}; // оценка

struct stud *Buffer; // буфер для хранения записей

int main ()

{printf ("\n PID текущего процесса равен: %i", getpid());

printf ("\n Введите имя файла базы данных: ");

scanf ("%s", &FName);

if ((Handle = open (FName, O_RDONLY))==-1)

{printf ("\n Невозможно открыть файл. Выполнение программы прервано.");

exit (-1);}

// вычисление размера файла базы данных

FSize=lseek(Handle, 0, SEEK_END);

lseek(Handle, 0, SEEK_SET);

// вычисление количества записей в базе данных

stud_num=FSize/sizeof(struct stud);

printf ("\n База данных хранит записи о %i студентах", stud_num);

printf ("\n Резервирование памяти в размере %i байт...", stud_num*sizeof(struct stud));

if ((Buffer=(struct stud*) malloc (stud_num*sizeof(struct stud)))==NULL)

{printf ("\n Не хватает памяти. Программа завершена с кодом возврата –1.");

exit (-1);}

if (FSize!=read (Handle, Buffer, FSize))

{printf ("\n Чтение базы данных невозможно.\n Программа прервана.");

close (Handle);

exit (-1);}

close (Handle);

for (i=0;i<stud_num;i++)

{printf ("\n\n Информация о %i студенте из %i", i+1, stud_num);

printf ("\n Фамилия студента: %s", Buffer[i].stud_surname);

printf ("\n Группа студента: %i", Buffer[i].stud_group);

printf ("\n Оценка студента: %i", Buffer[i].stud_mark);}

printf ("\n\n Вывод базы данных на экран завершен!\n");

}