
- •Сборник лабораторных работ
- •Аннотация
- •Введение
- •1Краткая теоретическая справка Математические функции стандартной библиотеки с
- •Справочная информация о величинах геометрических фигур
- •Расстояние между двумя точками
- •2Индивидуальные задания
- •3Краткая теоретическая справка
- •4Типовые задачи
- •5Индивидуальные задания
- •6Краткая теоретическая справка
- •Представление аналитических функций в виде рядов Тейлора
- •Общая схема алгоритма суммирования
- •Учет рекуррентной зависимости членов ряда
- •Учет погрешности вычисления суммы членов ряда
- •7Индивидуальные задания
- •8Краткая теоретическая справка Свойства делимости
- •Работа с цифрами числа
- •Типовые задачи
- •9Индивидуальные задания
- •10Краткая теоретическая справка Типовые задачи
- •11Индивидуальные задания
- •12Краткая теоретическая справка Обход матрицы
- •13Индивидуальные задания
- •14Краткая теоретическая справка
- •15Индивидуальные задания
- •16Краткая теоретическая справка
- •17Индивидуальные задания
- •18Краткая теоретическая справка
- •19Индивидуальные задания
- •20Краткая теоретическая справка
- •21Индивидуальные задания
- •22Индивидуальные задания
20Краткая теоретическая справка
В конспекте лекций подробно рассмотрены вопросы потокового вода-вывода файлов.
Последовательность работы с файловым потоком следующая:
#include <stdio.h>
void main(){
FILE *fp; //описываем указатель на поток
//открываем поток и сразу выполняем проверку:
if((fp=fopen("t.txt", "w")==NULL){
perror("ошибка при открытии файла \n");
exit(0);
}
… //выполняем операции обмена данными с потоком
fclose(fp); //закрываем поток
}
Когда программа начинает выполняться, автоматически открываются несколько стандартных потоков:
стандартный поток ввода (stdin – указатель на поток, связанный с устройством стандартного ввода – клавиатура),
стандартный поток вывода (stdout – указатель на поток, связанный со стандартным устройством вывода – экран дисплея),
стандартный поток вывода ошибок (stderr – указатель на поток, связанный со стандартным устройством вывода сообщений об ошибках – экран дисплея).
Для ввода-вывода данных с помощью стандартных потоков (stdin/stdout) в библиотеке языка C определены следующие функции:
getchar()/putchar() – ввод-вывод отдельного символа;
gets()/puts() – ввод-вывод строки;
scanf()/printf() – ввод-вывод в режиме форматирования данных.
Аналогичным образом можно осуществлять работу с файлами на диске. Для этой цели в библиотеку языка C включены следующие функции:
fgetc()/fputc() – ввод-вывод отдельного символа;
fgets()/fputs() – ввод-вывод строки;
fscanf()/fprintf() – ввод-вывод в режиме форматирования данных;
fread()/fwrite() – ввод-вывод блока данных (заданного количества байт).
Для проверки достижения признака конца файла можно использовать функцию
int feof(FILE *fn), возвращающую значение "истина", если конец файла достигнут.
Пример:
FILE *fp;
…
while(!feof(fp)) //пока не достигнут конец файла
//делать что-нибудь с файлом
21Индивидуальные задания
Задача 1. Для данных задачи 2 лабораторной работы 9 (Работа со структурами) описать функции для ввода-вывода значений массива структур из файла произвольного доступа. Создайте файл SortAllStr.out, в который запишите все результаты выполнения сортировки массива по различным полям.
Задача 2. Изменить решение задачи 2 лабораторной работы 8 (Работа со строками) таким образом, чтобы исходные данные находились в файле Str.in (текст может занимать несколько строк), а выходные записывались в файл Str.out.
Задача 2. Изменить решение задачи 3 лабораторной работы 6 (Работа со двумерными массивами) таким образом, чтобы исходные данные находились в файле Matr.in (первая строка содержит размерность (размерности) матрицы, остальные строки файла содержат значения элементов строк матрицы, записанные через пробел), а выходные записывались в файл Matr.out.
Тема: Многофайловая разработка программ
Цели: получение навыков разработки программ, состоящих из нескольких модулей; получение навыков разработки статических библиотек функций.
22Индивидуальные задания
Задача 1. Описать аналоги библиотечных функций для работы со строками strlen(), strcat(), strcpy(), strcmp(). Протестировать функции в главной функции на примерах, введенных пользователем. Реализовать задачу с помощью многофайлового проекта: main.cpp – функция main(), mystring.cpp – реализация функций, mystring.h – прототипы функций.
Задача 2. Реализовать задачу 1 данной лабораторной работы с использованием статически подключаемой динамической библиотеки, содержащей реализацию функций для работы со строками.
Задача 3. Реализовать задачу 1 данной лабораторной работы с использованием динамически подключаемой динамической библиотеки, содержащей реализацию функций для работы со строками.
<