
- •13. Функции пользователя и классы памяти.
- •13.1. Сущность и предназначение функций.
- •13.2. Определение и вызов функции.
- •13.3. Прототип функции.
- •13.4. Область видимости.
- •13.5. Классы памяти объектов в языке Cи.
- •13.6. Разбиение программы на модули.
- •14. Структуры и объединения
- •14.1. Понятие структуры
- •14.2. Декларация структурного типа данных
- •14.3. Объявление структурных переменных
- •14.4. Обращение к полям структуры
- •14.5. Операции со структурой как единым целым
- •14.6. Вложенные структуры
- •14.7. Массивы структур
- •14.8. Размещение структурных переменных в памяти
- •14.9. Битовые поля
- •14.10. Объединения
- •15. Генерация псевдослучайных чисел.
- •16. Файлы в языке с
- •16.1. Типы файлов.
- •16.2. Открытие файла
- •16.3. Закрытие файла
- •16.4. Запись - чтение информации
- •А) Посимвольный ввод-вывод
- •Б) Построчный и форматированный ввод-вывод
- •В) Блоковый ввод-вывод
- •Int fflush(file *stream);
- •16.5. Текстовые файлы
- •16.6. Перенаправление стандартного ввода-вывода
- •16.7. Бинарные файлы
- •16.8. Дополнительные полезные функции
- •16.9. Простейший пример создания собственной базы данных
16.9. Простейший пример создания собственной базы данных
Бинарные файлы могут использоваться для организации баз данных, состоящих, как правило, из объектов структурного типа.
Пример программы работы с файлом структур:
Программа обеспечивает ввод, дополнение, сохранение и просмотр информации о студентах. Для каждого студента указывается его фамилия и средний балл.
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
struct Sved {
char Fam[30];
float S_Bal;
} zap,zapt;
char Spis[]="Sp.dat";
FILE *F_zap;
FILE* Open_file(char *, char *);
void main (void) {
int i, j, kodR, nom, size = sizeof(Sved);
while(1) {
puts("Sozdanie - 1\nProsmotr - 2\nDobavlenie - 3\nVyhod - 0");
switch(kodR = getch())
{
case '1': case '3':
if(kodR==1) F_zap = Open_file (Spis,"w+");
else F_zap = Open_file (Spis,"a+");
while(2) {
cout << "\n Fam "; cin >> zap.Fam;
if((zap.Fam[0])=='0') break;
cout << "\n Srednij ball: ";
cin >> zap.S_Bal;
fwrite(&zap,size,1,F_zap);
}
fclose(F_zap);
break;
case '2': F_zap = Open_file (Spis,"r+");
nom=1;
while(2) {
if(!fread(&zap,size, 1, F_zap)) break;
printf(" %2d: %20s %5.2f\n", nom++, zap.Fam, zap.S_Bal);
}
fclose(F_zap);
break;
case '0': return; // exit(0);
} // Конец switch
} // Конец While(1)
} // Конец программы
// Нижеприведенная функция служит для того же, что и fopen(), но при
// неудаче выдает на экран ошибку
FILE* Open_file(char *file, char *kod)
{
FILE *f;
if(!(f = fopen(file, kod)))
{
puts("File isn\'t created!");
getch();
exit(1);
}
else return f;
}