
- •Программирование и структуры данных
- •Программирование и структуры данных
- •Программирование и структуры данных
- •Программирование и структуры данных
- •Программирование и структуры данных
- •Программирование и структуры данных
- •Программирование и структуры данных
- •Программирование и структуры данных
- •Программирование и структуры данных
- •Программирование и структуры данных
- •Программирование и структуры данных
- •Программирование и структуры данных
- •Программирование и структуры данных
- •Программирование и структуры данных
- •Программирование и структуры данных
- •Программирование и структуры данных
- •Программирование и структуры данных
- •Программирование и структуры данных
- •Программирование и структуры данных
- •Программирование и структуры данных
- •Программирование и структуры данных
- •Программирование и структуры данных
- •Программирование и структуры данных
- •Программирование и структуры данных

Программирование и структуры данных |
2007 г. |
•Если структурные переменные используются только в одной функции программы, то можно совместить описание переменных с описанием типа. При этом имя типа можно не задавать, например:
•struct
{ char fio[20];
int gr;
char adr[40]; } a1, a2, *p1;
Бикмурзина А.Р., Захарова З.Х., Хохлов Д.Г. |
КГТУ (КАИ), кафедра АСОИУ |
11 |

Программирование и структуры данных |
2007 г. |
•Память под структурную переменную может быть выделена динамически, при выполнении программы, например:
struct BOOK *p4;
p4 = malloc (sizeof (struct BOOK));
•Такая структура имени не имеет; обращаются к ней с помощью указателя p4, например:
gets (p4->name);
scanf (“%d”, &(p4->year));
Бикмурзина А.Р., Захарова З.Х., Хохлов Д.Г. |
КГТУ (КАИ), кафедра АСОИУ |
12 |

Программирование и структуры данных |
2007 г. |
Работа с файлами
•Файл – это поименованная область на диске, содержащая какую-либо информацию, например, текст программы, данные для программы, документ.
•Файлы бывают текстовые и двоичные (бинарные). В операционной системе MS DOS текстовые файлы представляют собой последовательность символьных строк. Каждый символ занимает один байт. Строка заканчивается двумя символами: «возврат каретки» (с кодом 13) и «перевод строки» (с кодом 10).
Бикмурзина А.Р., Захарова З.Х., Хохлов Д.Г. |
КГТУ (КАИ), кафедра АСОИУ |
13 |

Программирование и структуры данных |
2007 г. |
Некоторые функции доступа к файлам
1. fopen – открытие файла.
•Прототип функции:
FILE * fopen (char * fname, char * mode);
•Первый параметр fname задает имя открываемого файла, второй – режим открытия файла или вид его обработки. Параметр mode может задаваться в виде:
“r” – чтение файла,
“w” – запись в файл (если файл существует, он стирается),
“a” – добавление информации в конец файла, “r+” – чтение и запись.
Бикмурзина А.Р., Захарова З.Х., Хохлов Д.Г. |
КГТУ (КАИ), кафедра АСОИУ |
14 |

Программирование и структуры данных |
2007 г. |
• Пример.
FILE *fin, *fout; |
/* указатели на входной и выходной |
|
|
|
файлы */ |
char fname[13]; |
/* имя выходного файла */ |
|
if |
((fin = fopen(“f1.txt”, “r”)) == NULL) |
|
{ |
puts (“Файл в текущем каталоге не найден”); |
exit (1);
}
puts(“Введите имя выходного файла”); gets (fname);
fout = fopen (fname, “w”);
Бикмурзина А.Р., Захарова З.Х., Хохлов Д.Г. |
КГТУ (КАИ), кафедра АСОИУ |
15 |

Программирование и структуры данных |
2007 г. |
•2. Для чтения информации из файла
служат функции:
•fscanf() – форматированный ввод,
•fgets() – чтение одной строки,
•fgetc() – чтение одного символа,
•fread() – ввод заданного числа байтов (символов).
Бикмурзина А.Р., Захарова З.Х., Хохлов Д.Г. |
КГТУ (КАИ), кафедра АСОИУ |
16 |

Программирование и структуры данных |
2007 г. |
•Пример.
•Файл stud.txt содержит информацию о сдаче сессии студентами. Каждая строка файла содержит фамилию и инициалы студента (20 символов), номер группы и 4 экз. оценки, разделенные пробелами.
•Пример строки:
Иванов А.С. |
4151 4 5 4 3 |
•Записать информацию из файла в массив структур.
/* фрагмент программы */
struct STUDENT |
/* тип элемента массива (записи файла) */ |
|
{ char |
fio[21]; |
/* фамилия */ |
int |
gruppa; |
/* группа */ |
int |
oc[4]; |
/* массив оценок */ |
}; |
|
|
FILE *fin; |
/* указатель на входной файл */ |
|
struct STUDENT |
ms[300]; /* массив структур */ |
|
int i=0; |
/* индекс очередного элемента массива ms */ |
|
int j; |
|
/* индекс очередной оценки */ |
Бикмурзина А.Р., Захарова З.Х., Хохлов Д.Г. |
КГТУ (КАИ), кафедра АСОИУ |
17 |

Программирование и структуры данных |
2007 г. |
if ((fin = fopen(“stud.txt”, “r”) |
== NULL) |
{ puts (“Файл в текущем каталоге не найден”); exit (1);
}
/*чтение информации из файла в массив ms*/ while (!feof(fin))
{ fgets (ms[i].fio, 21, fin);
fscanf (fin, “%d”, &ms[i].gruppa); for (j=0; j<4; j++)
fscanf (fin, “%d”, &ms[i].oc[j]); fgetc(fin);
i++;
}
Бикмурзина А.Р., Захарова З.Х., Хохлов Д.Г. |
КГТУ (КАИ), кафедра АСОИУ |
18 |

Программирование и структуры данных |
2007 г. |
•3. Для записи информации в файл
используются функции:
•fprintf() – форматированный вывод,
•fputs() – вывод строки,
•fputc() – вывод одного символа,
•fwrite() – вывод заданного числа байтов (символов).
Бикмурзина А.Р., Захарова З.Х., Хохлов Д.Г. |
КГТУ (КАИ), кафедра АСОИУ |
19 |

Программирование и структуры данных |
2007 г. |
Часть 2. Структуры данных и методы программирования
Абстрактная структура данных - это структура данных, рассматриваемая с точки зрения применяемых к ней операций без описания способа ее представления в памяти.
Бикмурзина А.Р., Захарова З.Х., Хохлов Д.Г. |
КГТУ (КАИ), кафедра АСОИУ |
20 |