Знакомство с файлами

Содержание

Слайд 2

Работа с файлами «вручную»

Работа с файлами «вручную»

Слайд 3

Файл Файл - именованная область данных на носителе информации, используемая как

Файл

Файл - именованная область данных на носителе информации, используемая как

базовый объект взаимодействия с данными в операционных системах.
https://ru.wikipedia.org/wiki/%D0%A4%D0%B0%D0%B9%D0%BB
Слайд 4

Проводник

Проводник

Слайд 5

Имя файла Имя файл = “IMG_2476.JPG”

Имя файла

Имя файл = “IMG_2476.JPG”

Слайд 6

Путь к файлу Путь к файлу = “C:\Photos\2022_04_23_дрЛеси”

Путь к файлу

Путь к файлу = “C:\Photos\2022_04_23_дрЛеси”

Слайд 7

Полное имя файла Полное имя файла = “C:\Photos\2022_04_23_дрЛеси\IMG_2476.JPG”

Полное имя файла

Полное имя файла
= “C:\Photos\2022_04_23_дрЛеси\IMG_2476.JPG”

Слайд 8

Содержимое файла Полное имя файла = “C:\Photos\2022_04_23_дрЛеси\IMG_2476.JPG”

Содержимое файла

Полное имя файла
= “C:\Photos\2022_04_23_дрЛеси\IMG_2476.JPG”

Слайд 9

Пользовательские операции над файлами Открыть Создать Скопировать Перенести (вырезать) Переименовать Удалить И др.

Пользовательские операции над файлами

Открыть
Создать
Скопировать
Перенести (вырезать)
Переименовать
Удалить
И др.

Слайд 10

Создание текстовых файлов «вручную» Проводник ? Нужная папка ? Правая кнопка мыши

Создание текстовых файлов «вручную»

Проводник ? Нужная папка ? Правая кнопка мыши

Слайд 11

Создание текстовых файлов «вручную» Открыть файл в редакторе. Набрать нужный текст Сохранить

Создание текстовых файлов «вручную»

Открыть файл в редакторе.
Набрать нужный текст
Сохранить

Слайд 12

Создание папок «вручную» Открыть родительскую папку Нажать Правую кнопка мыши Создать Папку Введите имя папки

Создание папок «вручную»

Открыть родительскую папку
Нажать Правую кнопка мыши
Создать
Папку
Введите имя папки

Слайд 13

Слайд 14

Работа с файлами «программно»

Работа с файлами «программно»

Слайд 15

Задача – прочитать из файла 2 целых числа, подсчитать их сумму,

Задача – прочитать из файла 2 целых числа, подсчитать их сумму,

вывести в другой файл
Входной файл:
3 12
Выходной файл:
15
Слайд 16

Работа с файлом – общий алгоритм Открыть файл Работать с файлом Закрыть файл

Работа с файлом – общий алгоритм

Открыть файл
Работать с файлом
Закрыть файл

Слайд 17

Задача (1) // Чтение из входного файла FILE *fin; int a,

Задача (1)

// Чтение из входного файла
FILE *fin;
int a, b, s;
fin =

fopen(“d:\\Temp\\Files\\in1.txt", "rt");
if (fin == NULL) {
printf("File in1.txt is not found");
return;
}
fscanf(fin, "%d%d", &a, &b);
fclose(fin);
Слайд 18

Задача (2) // Обработка s = a + b;

Задача (2)

// Обработка
s = a + b;

Слайд 19

Задача (3) // Запись в выходной файл FILE *fout; fout =

Задача (3)

// Запись в выходной файл
FILE *fout;
fout = fopen(“d:\\Temp\\Files\\out1.txt", "wt");
if (fout

== NULL) {
printf("File out1.txt cannot be created");
return;
}
fprintf(fout, "s = %d", s);
fclose(fout);
Слайд 20

Слайд 21

Несколько сценариев работы с файлами

Несколько сценариев работы с файлами

Слайд 22

Сценарий 1. Входные и выходные данные - в файлах ФАЙЛ_ВХОДНОЙ ?

Сценарий 1. Входные и выходные данные - в файлах

ФАЙЛ_ВХОДНОЙ ? Программа

? ФАЙЛ_ВЫХОДНОЙ
Входные данные готовятся в виде (входных) файлов.
Программа загружает данные из входных файлов. Выполняет всю необходимую работу.
Результаты сохраняет в (выходные) файлы.
Этапы:
Подготовить входные файлы (вручную, либо используя какую-то программу)
Запустить программу обработки файлов, которая прочитает входные файлы и создаст выходной файл
Работать с выходным файлов (вручную или при помощи еще какой-то программы)
Слайд 23

Сценарий 2. Файл для сохранения состояния Программа ? ФАЙЛ_СОСТОЯНИЯ ? Программа

Сценарий 2. Файл для сохранения состояния

Программа ? ФАЙЛ_СОСТОЯНИЯ ? Программа
Программа работает

и доходит до какого-то состояния.
При необходимости пользователь выполняет сохранение состояния программы. При этом создается файл, хранящий все необходимые данные программы.
При необходимости пользователь решает вернуться к сохраненному состоянию. Для этого все данные загружаются из файла состояния.
Слайд 24

Слайд 25

Лабораторная работа №22 Знакомство с файлами

Лабораторная работа №22

Знакомство с файлами

Слайд 26

Работа с файлами – «совсем» общий алгоритм Подготовить входные файлы (вручную,

Работа с файлами – «совсем» общий алгоритм

Подготовить входные файлы (вручную, либо

используя какую то программу)
Запустить программу обработки файлов, которая прочитает входные файлы и создаст выходной файл
Работать с выходным файлов (вручную или при помощи еще какой-то программы)
Слайд 27

Задача 1 – Подготовить входные файлы Подготовить для следующих задач (№2-№5+) все необходимые входные файлы.

Задача 1 – Подготовить входные файлы

Подготовить для следующих задач (№2-№5+) все

необходимые входные файлы.
Слайд 28

Задача 1.1 – Подготовить входной файл in2.txt Подготовить для следующих задач

Задача 1.1 – Подготовить входной файл in2.txt

Подготовить для следующих задач (№2-№7)

все необходимые входные файлы.

Имя входного файла in2.txt
Место хранения файлов – на ваш выбор.
Пример входа:
1 5 8

Слайд 29

Задача 2.1 – Обработка чисел 1 С клавиатуры вводятся 3 целых

Задача 2.1 – Обработка чисел 1

С клавиатуры вводятся 3 целых числа.
Их

произведение выводится на экран.
Все этапы обработки нужно логировать (выводом в консоль).
Пример входа:
1 5 8
Пример выхода:
40
Слайд 30

Задача 2.1 – Обработка чисел 1 С клавиатуры вводятся 3 целых

Задача 2.1 – Обработка чисел 1

С клавиатуры вводятся 3 целых числа.
Их

произведение выводится на экран.
Все этапы обработки нужно логировать (выводом в консоль).
Пример входа:
1 5 8
Пример выхода:
40

#define _CRT_SECURE_NO_WARNINGS
#include
#include
void main() {
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
printf("Власенко Олег\n");
printf("ЛР12 Задача 2.1\n");
// Числа, читаемые из входного файла
int a, b, c;
// Произведение, выводимое в выходной файл
int p;
scanf("%d%d%d", &a, &b, &c);
printf("ввели: %d, %d, %d\n", a, b, c);
// Обработка
p = a * b * c;
printf("p = %d\n", p);
}

Слайд 31

Работа с файлом – общий алгоритм Открыть файл Работать с файлом Закрыть файл

Работа с файлом – общий алгоритм

Открыть файл
Работать с файлом
Закрыть файл

Слайд 32

Задача 2.2 – Обработка чисел 1 Из входного файла берутся 3

Задача 2.2 – Обработка чисел 1

Из входного файла берутся 3 целых

числа.
Их произведение сохраняется в выходной файл.
Имя входного файла in2.txt
Имя выходного файла out2.txt
Место хранения файлов – на ваш выбор.
Все этапы обработки нужно логировать в консоль.
Пример входа:
1 5 8
Пример выхода:
40
Слайд 33

Задача 2.2 – Обработка чисел 1 Из входного файла берутся 3

Задача 2.2 – Обработка чисел 1

Из входного файла берутся 3 целых

числа.
Их произведение сохраняется в выходной файл.
Имя входного файла in2.txt
Имя выходного файла out2.txt
Место хранения файлов – на ваш выбор.
Все этапы обработки нужно логировать в консоль.
Пример входа:
1 4 5
Пример выхода:
20
Слайд 34

Задача 2.2 – Обработка чисел 1 (2) #define _CRT_SECURE_NO_WARNINGS #include #include

Задача 2.2 – Обработка чисел 1 (2)

#define _CRT_SECURE_NO_WARNINGS
#include
#include
void main()

{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
printf("Власенко Олег\n");
printf("ЛР12 Задача 2\n");
// Чтение из входного файла
// Числа, читаемые из входного файла
int a, b, c;
// Произведение, выводимое в выходной файл
int p;
// Входной файл
FILE* fin = fopen("c:\\Temp\\Lection12\\in2.txt", "rt");
if (fin == NULL) {
printf("Входной файл не найден");
return;
}
fscanf(fin, "%d%d%d", &a, &b, &c);
fclose(fin);
Слайд 35

Задача 2.2 – Обработка чисел 1 (3) // логирование ввода printf("ввели:

Задача 2.2 – Обработка чисел 1 (3)

// логирование ввода
printf("ввели: %d, %d,

%d\n", a, b, c);
// Обработка
p = a * b * c;
// логирование вывода
printf("p = %d\n", p);
// Запись в выходной файл
// Выходной файл
FILE* fout;
fout = fopen("c:\\Temp\\Lection12\\out2.txt", "wt");
if (fout == NULL) {
printf("Выходной файл не создался");
return;
}
fprintf(fout, "%d", p);
fclose(fout);
}
Слайд 36

Задача 3.1 – Обработка чисел 2 С клавиатуры вводятся 5 целых

Задача 3.1 – Обработка чисел 2

С клавиатуры вводятся 5 целых числа.
Их

сумма выводится на экран.
Все этапы обработки нужно логировать (выводом в консоль).
Пример входа:
1 2 5 9 2
Пример выхода:
19
Слайд 37

Задача 3.2 – Обработка чисел 2 Из файла in3.txt вводятся 5

Задача 3.2 – Обработка чисел 2

Из файла in3.txt вводятся 5 целых

числа.
Их сумма сохраняется в выходной файл out3.txt.
Все этапы обработки нужно логировать (выводом в консоль).
Пример входа:
1 2 5 9 2
Пример выхода:
19
Слайд 38

Задача 4 – Обработка одномерного массива Из входного файла берется одномерный

Задача 4 – Обработка одномерного массива

Из входного файла берется одномерный массив

целых чисел.
Все элементы большее среднего арифметического нужно увеличить в 10 раз.
Получившийся массив нужно сохранить в выходном файле.
Формат входного и выходного файла:
n
a[0] a[1] a[2] a[3] … a[n-1]
n <= 10
Пример входа (Файл in4.txt):
4
1 2 3 4
Пример выхода:
4
1 2 30 40
Слайд 39

Задача 4 – Обработка одномерного массива Из входного файла берется одномерный

Задача 4 – Обработка одномерного массива

Из входного файла берется одномерный массив

целых чисел.
Все элементы большее среднего арифметического нужно увеличить в 10 раз.
Получившийся массив нужно сохранить в выходном файле.
Формат входного и выходного файла:
n
a[0] a[1] a[2] a[3] … a[n-1]
n <= 10
Пример входа (Файл in4.txt):
4
1 2 3 4
Пример выхода:
4
1 2 30 40
Слайд 40

Задача 4 – Обработка одномерного массива (2)

Задача 4 – Обработка одномерного массива (2)

Слайд 41

Задача 4 – Обработка одномерного массива (3)

Задача 4 – Обработка одномерного массива (3)

Слайд 42

Задача 4 – Обработка одномерного массива (4)

Задача 4 – Обработка одномерного массива (4)

Слайд 43

Задача 5 – Обработка одномерного массива 2 Из входного файла берется

Задача 5 – Обработка одномерного массива 2

Из входного файла берется одномерный

массив целых чисел.
Все четные элементы меньшие чем среднее арифметическое нужно уменьшить в 2 раза.
Получившийся массив нужно сохранить в выходном файле.
Формат входного и выходного файла:
n
a[0] a[1] a[2] a[3] … a[n-1]
n <= 10
Пример входа (Файл in5.txt):
4
1 2 3 4
Пример выхода (Файл out5.txt):
4
1 1 3 4
Слайд 44

Домашнее задание A. Доделать задачи 1-5, которые не успели сделать в

Домашнее задание

A. Доделать задачи 1-5, которые не успели сделать в классе.
6.

Задачу из ЛР17 («Массив переменной длины») переделать на работу с файлами.
Выбрать любую задачу, которую вы выполнили самостоятельно в ЛР17. Добавить к ней загрузку из входного файла. И сохранение результата в выходной файл.
7*. Добавить к ЛР17 возможность сохранять в файл состояние массива.
8*. Добавить к ЛР17 возможность загружать из файла состояние массива.
9*. Добавить к ЛР18 возможность сохранять в файл состояние массива.
10*. Добавить к ЛР18 возможность загружать из файла состояние массива.
11*. Добавить в игру из ЛР19 сохранение состояния игры в файл по нажатию клавиши S.
12*. Добавить в игру из ЛР19 загрузку состояния игры из файла по нажатию клавиши L.
13**. Добавить в сквозной проект возможность сохранения и загрузки состояния игры.
Слайд 45

ИТОГО по лабораторной работе 22 Попробовали создавать текстовые файлы вручную Попробовали

ИТОГО по лабораторной работе 22

Попробовали создавать текстовые файлы вручную
Попробовали работать с

файлами программно
Научились загружать входные данные из файлов
Научились сохранять выходные данные в файл
* Научились сохранять состояние в файл.
* Научились восстанавливать состояние программы, загружая его из файла.
** Добавили сохранение/восстановление состояния игры к сквозному проекту
Слайд 46

Слайд 47

Сохранение состояния в игре

Сохранение состояния в игре

Слайд 48

Задача C7. Сохранить состояние игры Чтобы можно было вернуться к игре,

Задача C7. Сохранить состояние игры

Чтобы можно было вернуться к игре, и

продолжить её с определенного места, в играх часто предусматривают сохранение/загрузку состояния.
Состояние игры включает в себя состояние всех переменных, которые описывают статус всех объектов игры.
Для реализации задачи в нашей игре нужно:
Создать функцию сохранения состояния
А) В ней реализовать открытие файла,
Б) сохранение всех глобальных переменных
В) закрытие файла
Вызвать эту функцию при нажатии определенной клавиши
Слайд 49

Задача C7. Реализация (0.1). Данные, которые нужно сохранить

Задача C7. Реализация (0.1). Данные, которые нужно сохранить

Слайд 50

Задача C7. Реализация (0.2). Данные, которые нужно сохранить

Задача C7. Реализация (0.2). Данные, которые нужно сохранить

Слайд 51

Задача C7. Реализация (1). функция сохранения состояния

Задача C7. Реализация (1). функция сохранения состояния

Слайд 52

Задача C7. Реализация (2). Вызов функции сохранения состояния

Задача C7. Реализация (2). Вызов функции сохранения состояния

Слайд 53

Задача C7. Реализация (3). Результаты сохранения

Задача C7. Реализация (3). Результаты сохранения

Слайд 54

Задача C8. Загрузка состояние игры Если состояние игры ранее было сохранено,

Задача C8. Загрузка состояние игры

Если состояние игры ранее было сохранено, то

его можно загрузить.
Для реализации задачи в нашей игре нужно:
Создать функцию загрузки состояния игры
Вызвать эту функцию при нажатии определенной клавиши
Слайд 55

Задача C8. Реализация (1). функция загрузки состояния

Задача C8. Реализация (1). функция загрузки состояния

Слайд 56

Задача C8. Реализация (2). Вызов функции загрузки состояния

Задача C8. Реализация (2). Вызов функции загрузки состояния

Слайд 57

Задача C8. Реализация (3). Результаты загрузки

Задача C8. Реализация (3). Результаты загрузки

Слайд 58

Слайд 59

ЛР19. Сохранение состояния игры При нажатии клавиши S в файле game.txt

ЛР19. Сохранение состояния игры

При нажатии клавиши S в файле game.txt сохранить

состояние игры.
При нажатии клавиши L из файла game.txt загрузить состояние игры.
Слайд 60

ЛР19. Сохранение состояния игры (2)

ЛР19. Сохранение состояния игры (2)

Слайд 61

ЛР19. Сохранение состояния игры (3)

ЛР19. Сохранение состояния игры (3)

Слайд 62

ЛР19. Сохранение состояния игры (4)

ЛР19. Сохранение состояния игры (4)

Слайд 63

ЛР19. Сохранение состояния игры (5)

ЛР19. Сохранение состояния игры (5)

Слайд 64

Работа с бинарными файлами

Работа с бинарными файлами

Слайд 65

ЛР19. Сохранение состояния игры При нажатии клавиши S в файле game_bin.bin

ЛР19. Сохранение состояния игры

При нажатии клавиши S в файле game_bin.bin сохранить

состояние игры.
При нажатии клавиши L из файла game_bin.bin загрузить состояние игры.
Слайд 66

ЛР19. Сохранение состояния игры (2)

ЛР19. Сохранение состояния игры (2)

Слайд 67

ЛР19. Сохранение состояния игры (3)

ЛР19. Сохранение состояния игры (3)

Слайд 68

ЛР19. Сохранение состояния игры (4)

ЛР19. Сохранение состояния игры (4)

Слайд 69

ЛР19. Сохранение состояния игры (5)

ЛР19. Сохранение состояния игры (5)

Слайд 70

Как просмотреть содержимое бинарного файла 1. Открыть меню «Файл»

Как просмотреть содержимое бинарного файла

1. Открыть меню «Файл»

Слайд 71

Как просмотреть содержимое бинарного файла 2. Выбрать пункт меню «Открыть»

Как просмотреть содержимое бинарного файла

2. Выбрать пункт меню «Открыть»

Слайд 72

Как просмотреть содержимое бинарного файла 3. Выбрать пункт «Файл…»

Как просмотреть содержимое бинарного файла

3. Выбрать пункт «Файл…»

Слайд 73

Как просмотреть содержимое бинарного файла 4. В открывшемся окне «Открыть файл»

Как просмотреть содержимое бинарного файла

4. В открывшемся окне «Открыть файл» выбрать

папку в которой лежит ваш бинарный файл
Слайд 74

Как просмотреть содержимое бинарного файла 5. В окне «Открыть файл» выбрать

Как просмотреть содержимое бинарного файла

5. В окне «Открыть файл» выбрать ваш

бинарный файл – в нашем случае это «game_bin.bin»
Слайд 75

Как просмотреть содержимое бинарного файла 6. В окне «Открыть файл» нажать кнопку рядом с кнопкой «Открыть»

Как просмотреть содержимое бинарного файла

6. В окне «Открыть файл» нажать кнопку

рядом с кнопкой «Открыть»
Слайд 76

Как просмотреть содержимое бинарного файла 7. Выбрать пункт «Открыть с помощью…»

Как просмотреть содержимое бинарного файла

7. Выбрать пункт «Открыть с помощью…»

Слайд 77

Как просмотреть содержимое бинарного файла 8. В открывшемся окне «Открыть с

Как просмотреть содержимое бинарного файла

8. В открывшемся окне «Открыть с помощью…»

выбрать «Двоичный редактор (По умолчанию)»
Слайд 78

Как просмотреть содержимое бинарного файла 9. Нажать кнопку «ОК»

Как просмотреть содержимое бинарного файла

9. Нажать кнопку «ОК»

Слайд 79

Как просмотреть содержимое бинарного файла 10. Работать с открывшимся содержимым бинарного файла

Как просмотреть содержимое бинарного файла

10. Работать с открывшимся содержимым бинарного файла

Слайд 80

Слайд 81

Лабораторная работа №23 Обработка текстов

Лабораторная работа №23

Обработка текстов

Слайд 82

Задача 1 Текстовый файл text1.txt преобразовать в текстовый файл out1.txt заменив

Задача 1

Текстовый файл text1.txt преобразовать в текстовый файл out1.txt заменив все

табуляции символом ‘%’.

#define _CRT_SECURE_NO_WARNINGS
#include
#include
#define MAX_LEN 80
char s[MAX_LEN];
void main() {
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
printf("Власенко Олег\n");
printf("ЛР23 Задача 1\n");

Слайд 83

Задача 1 (2) Текстовый файл text1.txt преобразовать в текстовый файл out1.txt

Задача 1 (2)

Текстовый файл text1.txt преобразовать в текстовый файл out1.txt заменив

все табуляции символом ‘%’.

// Входной файл
FILE* fin = fopen("c:\\Temp\\Lection12\\text1.txt", "rt");
if (fin == NULL) {
printf("Входной файл не найден");
return;
}
// Выходной файл
FILE* fout;
fout = fopen("c:\\Temp\\Lection12\\out1.txt", "wt");
if (fout == NULL) {
printf("Выходной файл не создался");
return;
}

Слайд 84

Задача 1 (3) Текстовый файл text1.txt преобразовать в текстовый файл out1.txt

Задача 1 (3)

Текстовый файл text1.txt преобразовать в текстовый файл out1.txt заменив

все табуляции символом ‘%’.

// в цикле для всех строк
while (!feof(fin)) {
// загрузить строку
if (fgets(s, MAX_LEN - 1, fin) != NULL) {
// обработать загруженную строку
for (int i = 0; s[i] != '\0'; i++) {
if (s[i] == '\t') // Если прочитан пробел
s[i] = '%'; // Заменяем его на '%’
}
// сохранить строку в выходной файл
fprintf(fout, "%s", s);
printf(">>%s<<\n", s);
}
}

Слайд 85

Задача 1 (4) Текстовый файл text1.txt преобразовать в текстовый файл out1.txt

Задача 1 (4)

Текстовый файл text1.txt преобразовать в текстовый файл out1.txt заменив

все табуляции символом ‘%’.

// закрыли файлы
fclose(fin);
fclose(fout);
printf("ЛР23 Задача 1 FINISH\n");
}

Слайд 86

Задача 1 (5) Выполнение Текстовый файл text1.txt преобразовать в текстовый файл

Задача 1 (5) Выполнение

Текстовый файл text1.txt преобразовать в текстовый файл out1.txt

заменив все табуляции символом ‘%’.
Слайд 87

Задача 2 Текстовый файл text2.txt преобразовать в текстовый файл out2.txt сделав

Задача 2

Текстовый файл text2.txt преобразовать в текстовый файл out2.txt сделав все

буквы БОЛЬШИМИ. Использовать для чтения строк fgets().
Слайд 88

Задача 3* Текстовый файл text3.txt преобразовать в текстовый файл out3.txt выведя

Задача 3*

Текстовый файл text3.txt преобразовать в текстовый файл out3.txt выведя в

конце каждой строки символ #, если в строке встретилась хотя бы одна буква. Использовать для чтения строк fgets().
Слайд 89

Задача 4* Текстовый файл text4.txt преобразовать в текстовый файл out4.txt добавив

Задача 4*

Текстовый файл text4.txt преобразовать в текстовый файл out4.txt добавив в

выходной текст сразу после слова, содержащего хотя бы одну заглавную букву, символ ‘+’. Использовать для чтения из файла функцию getc().
Слайд 90

Задача 4* (1) #define _CRT_SECURE_NO_WARNINGS #include #include #define MAX_LEN 80 void

Задача 4* (1)

#define _CRT_SECURE_NO_WARNINGS
#include
#include
#define MAX_LEN 80
void main() {
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
printf("Власенко Олег\n");
printf("ЛР23

Задача 4\n");
// Входной файл
FILE* fin = fopen("c:\\Temp\\Lection12\\text4.txt", "rt");
if (fin == NULL) {
printf("Входной файл не найден");
return;
}
// Выходной файл
FILE* fout;
fout = fopen("c:\\Temp\\Lection12\\out4.txt", "wt");
if (fout == NULL) {
printf("Выходной файл не создался");
return;
}
Слайд 91

Задача 4* (2) // читаемый из файла очередной символ int ch;

Задача 4* (2)

// читаемый из файла очередной символ
int ch; // именно

int!!! если будет char - то будут проблемы!!!
// is_letter = 1 если прочитана буква, is_letter = 0 если прочитана не буква
int is_letter = 0;
// word - формируемое слово, word_len - его длина
char word[MAX_LEN];
int word_len = 0;
// пока файл не кончился - читаем очередной символ из файла
while ((ch = getc(fin)) != EOF) {
// Если прочитали из файла букву
if (isalpha((unsigned char)ch)) {
//if (isalpha_my((unsigned char)ch)) { // с русскими буквами
// если до этого была не буква
if (!is_letter) {
// начинаем формировать новое слово!
word_len = 0;
// фиксируем, что была прочитана буква
is_letter = 1;
}
if (word_len < MAX_LEN - 1) {
// очередную букву добавляем к слову
word[word_len++] = ch;
}
else {
// Если слово слишком длинное - то лишние буквы выкидываем
}
}
Слайд 92

Задача 4* (3) // Если прочитали из файла не букву! else

Задача 4* (3)

// Если прочитали из файла не букву!
else { //

if (!isalpha(ch)) {
// если до этого была буква
if (is_letter) {
// в word накоплены символы - нужно закрыть строку в конце символом '\0’
word[word_len] = '\0’;
fprintf(fout, "%s", word);
int isCaps = 0;
for (int i = 0; word[i] != '\0'; i++) {
if (isupper((unsigned char)word[i]))
isCaps = 1;
}
if (isCaps) {
fprintf(fout, "+");
printf("%s\n", word);
}
}
// фиксируем, что была прочитана не буква
is_letter = 0;
// в выходной файл добавляем только что прочитанный символ "КАК ЕСТЬ"
fprintf(fout, "%c", ch);
} // else
} // while ((ch = getc(fin)) != EOF)
Слайд 93

Задача 4* (4) // Последнее слово - ЗАКРЫТЬ!!!!! // если до

Задача 4* (4)

// Последнее слово - ЗАКРЫТЬ!!!!!
// если до этого была

буква
if (is_letter) {
// в word накоплены символы - нужно закрыть строку в конце символом '\0’
word[word_len] = '\0’;
fprintf(fout, "%s", word);
int isCaps = 0;
for (int i = 0; word[i] != '\0'; i++) {
if (isupper((unsigned char)word[i]))
isCaps = 1;
}
if (isCaps) {
fprintf(fout, "+");
printf("%s\n", word);
}
}
// закрыли файлы
fclose(fin);
fclose(fout);
printf("ЛР23 Задача 4 FINISH\n");
}
Слайд 94

Задача 5* Текстовый файл text5.txt преобразовать в текстовый файл out5.txt добавив

Задача 5*

Текстовый файл text5.txt преобразовать в текстовый файл out5.txt добавив в

выходной текст сразу после слова, не содержащего ни одной заглавноё буквы, символ ‘-’. Использовать для чтения из файла функцию getc().
Слайд 95

Домашнее задание - часть 1 Доделать все задачи 1-5. Общее задание

Домашнее задание - часть 1

Доделать все задачи 1-5.
Общее задание – из

файла textN.txt нужно переписать в файл outN.txt текст, внеся некоторые изменения. Использовать для чтения строк fgets().
6. Нужно в конце каждой строки добавить число K – сколько в строке раз встретился символ ТОЧКА С ЗАПЯТОЙ.
7*. Нужно в конце каждой строки добавить число K – сколько в строке раз встретился символ ВОПРОСИТЕЛЬНЫЙ ЗНАК.
8. Предложите свой собственный способ обработки текста из входного файла.
Слайд 96

Домашнее задание - часть 2 9. Сделать индивидуальную задачу - выберите

Домашнее задание - часть 2

9. Сделать индивидуальную задачу - выберите свой

вариант преобразования – согласно номера в журнале!
Общее задание:
Общее задание – из файла text9.txt нужно переписать в файл out9.txt текст, внеся некоторые изменения. Использовать для чтения строк fgets().
Все маленькие латинские буквы заменить символом ‘#’.
Все гласные латинские буквы заменить символом ‘&’.
Все согласные латинские буквы заменить символом ‘&’.
Все гласные большие латинские буквы заменить символом ‘$’.
Все гласные маленькие латинские буквы заменить символом ‘@’.
Все цифры заменить символом ‘X’.
Все латинские буквы сделать большими.
Все латинские буквы сделать маленькими.
Все символы за исключением латинских букв, заменить символом ‘_’ (подчеркивание).
Все знаки препинания заменить символом ‘_’ (подчеркивание).
Все символы арифметических операций, заменить символом ‘_’ (подчеркивание).
Слайд 97

Домашнее задание - часть 3 10**. Предложите свой собственный способ обработки

Домашнее задание - часть 3

10**. Предложите свой собственный способ обработки текста

из входного файла.
Нужно использовать для чтения из файла функцию getc().
Приветствуется преобразование текста в HTML файл.
Слайд 98

ИТОГО по ЛР23 Познакомились с обработкой текстовых файлов.

ИТОГО по ЛР23

Познакомились с обработкой текстовых файлов.

Слайд 99

Слайд 100

Рассмотренные средства работы с файлами FILE – структура, хранящая информацию об

Рассмотренные средства работы с файлами

FILE – структура, хранящая информацию об открытом

файле
Упомянутые функции по работе с файлами:
fopen() / fclose() - открытие / закрытие
fprintf() / fscanf() – форматированная запись / чтение
fwrite() / fread() - работа с бинарными файлами (запись / чтение)
feof() – достигнут ли конец файла?
fgets() – прочитать строку из файла
getc() – прочитать символ из файла
fopen_s() – безопасная версия fopen()
fscanf_s() - безопасная версия fscanf()