Similar presentations:
1_7_Структуры_Аргументы кмд_Файлы
1.
Алгоритмизация и программированиеСтруктуры
2.
Структуры❖ Объединение данных разных (или одинаковых) типов под одним именем
❖ name, age, height – атрибуты структуры
❖ struct Person – объявление структуры или создание объекта
3.
Инициализация структур4.
Указатели и структуры❖ Указатель на структуру объявляется так же, как указатель на любой другой тип
❖ Оператор -> — это сокращённая форма записи (*ptr).атрибут
5.
Методы и функции❖ Метод – функция, связанная с конкретным объектом (закрытые и открытые)
❖ Функция – общее назначение, не обязательно относится к какому-то объекту
❖ *Сеттеры (Setters) – методы, устанавливающие значение атрибута
❖ *Геттеры (Getters) – методы, получающие значение атрибута
6.
Память структур❖ Паддинг – дополнительное «выравнивание» выделенной памяти по адресам, кратным их размеру
3 chars name Cat: 8
4 chars name Cat: 8
5 chars name Cat: 12
7.
Вложенные структурыСтруктура, которая помимо обычных типов данных, содержит другие структуры
Animal – базовое свойство объекта. Родитель
Cat, Dog – дополнительные свойства объекта. Наследники
8.
Алгоритмизация и программированиеАргументы для программ
9.
argcПервый целочисленный аргумент главной функции и отвечает за общее количество принятых параметров
>arguments.exe
Arguments count: 1
>arguments.exe 2
Arguments count: 2
>arguments.exe 2 3
Arguments count: 3
>arguments.exe 2 3 4
Arguments count: 4
10.
argvВторой аргумент главной функции и содержит массив значений принятых аргументов. Тип: char*
>arguments.exe 2 3 4
{"argument_0": "arguments.exe"}
{"argument_1": "2"}
{"argument_2": "3"}
{"argument_3": "4"}
❖ Все аргументы передаются строками (char*). Если нужно число, то его нужно преобразовать
❖ Индексация начинается с 0 – имя запущенного приложения
❖ Если обратиться к несуществующему аргументу – гарантированный вылет за пределы памяти
11.
Парсим аргументыПарсинг — «разобрать текст на кусочки и понять, что к чему»
>calc.exe
Usage: calc.exe <num> <+|-|/|*> <num>
>calc.exe 2 + 3
2+3=5
>calc.exe 2 - 3
2 - 3 = -1
>calc.exe 6 / 3
6/3=2
>calc.exe 2 * 3 // просто меняем в коде * на x
Usage: calc.exe <num> <+|-|/|*> <num>
12.
Работа с файламиФайлы – точно такой же поток вывода, как stdout или stderr. Да даже эти потоки на самом то деле являются FILE*
Режим
Чтение
Запись
Обнуление при
открытии
“r” / “rb”
✓
✗
✗
“w” / “wb”
✗
✓
✓
“a” / “ab”
✗
✓
✗
“r+” / “rb+”
✓
✓
✓
“w+” / “wb+”
✓
✓
✓
“a+” / “ab+”
✓
✓
✗
13.
Чтение из файлаfgets – читает строку из файла. Требуется указывать максимальный размер строки
fgetc – читает файл посимвольно
fread – чтение «блоками» или «кусками». Если вернулось меньше, чем просили, то, скорее всего, конец файла
14.
Запись в файлfprintf – форматированный вывод в FILE* (в том числе в stdout, stderr)
fputs / fputc – вывод в FILE* строки или конкретного символа
fwrite – сколько конкретно записать в FILE*. Требует проверки корректной записи данных на диск
// cats.txt
Tom,3,fish
Acya,4,chicken
Din,5,mouse
// cats_copy.txt
Tom,3,fish
Acya,4,chicken
Din,5,mouse
15.
MiniCopy_v11) Открыли файл из argv[1] на бинарное чтение
2) Открыли файл из argv[2] на бинарную запись
3) Побайтово записали файл
>minicopy.exe cat-image.jpg cat-image.jpg
[ERROR] Unable to copy file onto itself: cat-image.jpg
>minicopy.exe cat-image.jpg cat-img_copy.jpg
16.
MiniCopy_v21) Открыли файл из argv[1] на бинарное чтение
2) Открыли файл из argv[2] на бинарную запись
3) Поблочно записали файл
>minicopy.exe cat-image.jpg cat-image.jpg
[ERROR] Unable to copy file onto itself: cat-image.jpg
>minicopy.exe cat-image.jpg cat-img_copy.jpg