Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Для того чтобы связать отдельные структурные переменные в двунаправленный список, в структурный шаблон включены два указателя: - на предыдущий элемент списка prior;
- на следующий элемент списка next.
Начало Конец
списка списка
Полное описание структурного шаблона abiturient будет иметь вид:
struct abiturient { char Name[10];
char LastName[10];
struct abiturient *prior; //указатель на предыдущий элемент
struct abiturient *next; //указатель на следующий элемент
};
1.2. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ.
1. Изучить материал данного методического пособия, привлекая лекции и дополнительную литературу;
2. Разработать схемы алгоритмов и программу для обработки данных в соответствии с конкретным вариантом.
1.3. ВАРИАНТЫ ЗАДАНИЙ
1. Создать массив структурных переменных, содержащий информацию о студентах группы со следующими полями: номер группы, фамилия, пол, оценки, полученные в сессию. Написать и протестировать функции:
- ввода данных в массив;
- расчета среднего балла для каждого студента в сессию;
- расчета среднего балла по каждому предмету для студентов группы в сессию;
- определения процента отличников из числа студентом мужского и женского пола.
2. На основе односвязного списка создать произвольную базу данных. Приложение должно содержать следующие функции:
- ввод новых записей;
- удаление записей;
- поиск записей по комбинации признаков;
- корректировка записей;
- вывод данных.
1.4. КОНТРОЛЬНЫЕ ВОПРОСЫ
1. Что такое структура и как ее можно объявить?
2. Каково назначение операции “.”?
3. Каково назначение операции “ ->”?
4. С какой целью применяется имя шаблона?
5. Какой объем оперативной памяти выделяется под структуру, массив структур?
6. Каким должен быть фактический параметр, если формальный параметр – указатель на структуру?
2. ЛАБОРАТОРНАЯ РАБОТА №2
Целью лабораторной работы является освоение основных приемов работы с бинарными и текстовыми файлами, содержащими структуры, а именно:
- объявление файлов;
- функции открытия и закрытия файлов;
- функции и процессов обработки данных: создания, дополнения, поиска, чтения и удаления структур из файла.
2.1. МЕТОДИЧЕСКАЯ ЧАСТЬ
Язык Си кроме стандартного ввода данных с клавиатуры и вывода результатов на экран предоставляет также возможность обмена при операциях ввода-вывода с внешними устройствами, в том числе, с файлами на диске.
С началом работы любой программы автоматически открываются некоторые стандартные потоки, например стандартный ввод (stdin) и стандартный вывод (stdout). По умолчанию они связаны с клавиатурой и экраном терминала соответственно. Поэтому в тех функциях ввода-вывода, которые использовались до сих пор, не указывалось, из какого потока берутся или куда помещаются данные: это известно по умолчанию.
Однако возможно открывать и другие потоки, чтобы связать их либо с файлами на диске, либо с другими физическими устройствами (например, принтером), записывать в них или считывать из них информацию. Для этого служат функции ввода-вывода верхнего уровня.
Доступ к потоку осуществляется с помощью указателя. Указатель на файл описывается следующим образом:
Все файлы в языке Си рассматриваются как потоки байтов.
FILE *fptr;
Тип FILE – структура, определенная в заголовочном файле <stdio.h>, содержащая некоторую информацию о файле: флаги состояния файла, размер буфера, указатель на буфер и т.д.
Описанный указатель можно связать с конкретным файлом в момент открытия данного файла с помощью функции: fopen()
Функция имеет три основных параметра: 1. имя файла, который следует открыть.
2. указатель на файл.
3. указывает, как будет использоваться файл.
Пример использования: FILE *in,*in1;
in=fopen("test","rt"); //для чтения
in1=fopen(filename,"a+"); //для чтения и дополнения
Параметры режимов функции fopen()
Параметр | Действие |
r | Файл открывается только для чтения. При отсутствии файла появляется сообщение об ошибке |
w | Создание файла для записи. Существующий файл перезаписывается |
a | Файл открывается для добавления. Запись позволена только в конец файла. Новый файл создается для записи. |
r+ | Файл открывается для чтения и записи. При отсутствии файла появляется сообщение об ошибке |
w+ | Файл открывается для чтения и записи. Существующий файл перезаписывается |
a+ | Файл открывается для чтения и записи. Запись позволена только в конец файла. Несуществующий файл создается. |
t | Файл открывается в текстовом режиме. |
b | Файл открывается в двоичном режиме |
Если открытие файла прошло успешно, функция fopen() возвращает значение - указатель на переменную типа FILE и связывает файл программы с физическим файлом
Если fopen() неспособна открыть требуемый файл, то она возвращает значение NULL. Поэтому в программу целесообразно вставить строку проверки:
if((in=fopen("test","r")==NULL)
{ printf(“Ошибка открытия файла”);
return (1); //выход с кодом возврата 1
}
По окончании работы с файлом он должен быть закрыт с помощью функции:
fclose( file_pointer)
В качестве аргумента используется указатель на файл. Если закрытие прошло успешно, функция возвращает значение 0.
Для чтения и записи данных в файл имеются функции, аналогичные уже известным функциям ввода-вывода:
Дата публикования: 2015-02-22; Прочитано: 261 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!