Основы программирования в Linux
Шрифт:
Выполнив эту программу, вы увидите нечто подобное показанному на рис. 6.8.
Рис. 6.8
Приложение, управляющее коллекцией компакт-дисков
Теперь, когда вы узнали о средствах, которые предлагает библиотека curses, можно разработать типовое приложение. Далее приведена его версия, написанная на языке С и использующая библиотеку curses. К достоинствам приложения относятся более четкое отображение информации на экране и применение окна с прокруткой для просмотра списков.
Все приложение занимает восемь страниц, поэтому мы разделили его на секции и отдельные функции внутри секций. Исходный код программы curses_app.c можно получить на Web-сайте издательства Wrox . Как и все программы из этой книги, оно подчиняется требованиям Общедоступной лицензии проекта GNU.
Мы написали эту версию приложения для работы с базой данных компакт-дисков, используя информацию из предыдущих глав. Данное приложение — потомок оригинального сценария командной оболочки, приведенного в главе 2. Оно не перепроектировалось для написания на языке С, поэтому вы увидите в этой версии многие подходы, заимствованные из сценария. Учтите, что в этой реализации есть существенные ограничения, которые мы устраним в последующих модификациях.
Мы разбили программный код этого приложения на несколько отдельных секций, которые обозначены заголовками последующих разделов. Соглашения, принятые для оформления этого программного кода, немного отличаются от оформления большинства программ в этой книге; здесь выделение цветом применяется только для обозначения вызовов других функций приложения.
Начало нового приложения для работы с коллекцией компакт-дисков
Первая секция программного кода просто связана с объявлениями переменных и функций, которые вы будете применять позже, и инициализацией некоторых структур данных.
1. Включите в программу все приведенные заголовочные файлы и несколько глобальных переменных:
2. Теперь вам нужны глобальные переменные. Переменная
3. Теперь объявите имена файлов. Для простоты в этой версии имена файлов фиксированные, как и имя временного файла.
Это может вызвать проблемы, если программа выполняется двумя пользователями в одном и том же каталоге. Лучше получать имена файлов базы данных как аргументы программы или из переменных окружения. Нам также потребуется улучшенный метод генерации уникального имени временного файла, для чего мы могли бы использовать функцию
4. И наконец, прототипы функций:
5. Прежде чем рассматривать их реализацию, введем некоторые структуры (на самом деле массив пунктов меню) для хранения меню. Когда выбирается пункт меню, возвращается первый символ выбранного пункта. Например, если это пункт меню add new CD (добавить новый CD), при его выборе будет возвращен символ
Княжий пир
1. Княжеский пир
Фантастика:
фэнтези
рейтинг книги
На Берлин!
2. Моё пространственное убежище
Фантастика:
фэнтези
боевая фантастика
рпг
постапокалипсис
рейтинг книги
История Древнего мира. От истоков Цивилизации до падения Рима
Страницы истории
Научно-образовательная:
история
рейтинг книги
Черный Маг Императора 5
5. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
рейтинг книги
Сирота
1. Светлая Тьма
Фантастика:
юмористическое фэнтези
городское фэнтези
аниме
рейтинг книги
Эволюционер из трущоб. Том 4
4. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
рейтинг книги
Защитник
11. Другая сторона
Фантастика:
боевая фантастика
попаданцы
рпг
рейтинг книги
Локки 4 Потомок бога
4. Локки
Фантастика:
аниме
фэнтези
рейтинг книги
Властелин Севера
3. Саксонские хроники
Приключения:
исторические приключения
рейтинг книги
Сталин
3. Загадки жизни и смерти
Проза:
историческая проза
рейтинг книги
История человечества. Россия
Научно-образовательная:
история
рейтинг книги
Черная метка
7. Гибрид
Фантастика:
технофэнтези
аниме
фэнтези
попаданцы
рейтинг книги
Двенадцатая реинкарнация. Трилогия
Фантастика:
боевая фантастика
рейтинг книги
Linux Mint и его Cinnamon. Очерки применителя
Компьютеры и Интернет:
ос и сети
рейтинг книги