Нейл Мэтью - Основы программирования в Linux

Здесь есть возможность читать онлайн «Нейл Мэтью - Основы программирования в Linux» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Город: Санкт-Петербург, Год выпуска: 2009, ISBN: 2009, Издательство: «БХВ-Петербург», Жанр: Программирование, ОС и Сети, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Основы программирования в Linux: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Основы программирования в Linux»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

В четвертом издании популярного руководства даны основы программирования в операционной системе Linux. Рассмотрены: использование библиотек C/C++ и стан­дартных средств разработки, организация системных вызовов, файловый ввод/вывод, взаимодействие процессов, программирование средствами командной оболочки, создание графических пользовательских интерфейсов с помощью инструментальных средств GTK+ или Qt, применение сокетов и др. Описана компиляция программ, их компоновка c библиотеками и работа с терминальным вводом/выводом. Даны приемы написания приложений в средах GNOME® и KDE®, хранения данных с использованием СУБД MySQL® и отладки программ. Книга хорошо структурирована, что делает обучение легким и быстрым.
Для начинающих Linux-программистов

Основы программирования в Linux — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Основы программирования в Linux», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

while(1) {

11. Сначала вы должны проверить, существует ли уже дорожка с текущим номером дорожки. В зависимости от результатов проверки меняется строка приглашения:

memset(&new_track, '\0', sizeof(new_track));

existing_track = get_cdt_entry(entry_to_add_to->catalog,

track_no);

if (existing_track.catalog[0]) {

printf("\tTrack %d: %s\n", track_no,

existing_track.track_txt);

printf("\tNew text: ");

} else {

printf("\tTrack %d description: ", track_no);

}

fgets(tmp_str, TMP_STRING_LEN, stdin);

strip_return(tmp_str);

12. Если для данной дорожки не существует элемент и пользователь его не добавил, предположите, что больше нет дорожек, которые надо добавить:

if (strlen(tmp_str) == 0) {

if (existing_track.catalog[0] == '\0') {

/* Нет в наличии элемента, поэтому вставка завершается */

break;

} else {

/* Оставляем существующий элемент,

переходам к следующей дорожке */

track_no++;

continue;

}

}

13. Если пользователь введет единичный символ d, это приведет к удалению текущей дорожки и дорожек с большими номерами. Функция del_cdt_entryвернет false, если не сможет найти дорожку, которую следует удалить:

if ((strlen(tmp_str) == 1) && tmp_str[0] == 'd') { /* Удаляет эту и оставшиеся дорожки */

while (del_cdt_entry(entry_to_add_to->catalog, track_no)) {

track_no++;

}

break;

}

14. В этом пункте приводится код для вставки новой дорожки или обновления существующей. Вы формируете элемент cdt_entryструктуры new_trackи затем вызываете функцию базы данных add_cdt_entryдля того, чтобы включить его в базу данных:

strncpy(new_track. track_txt, tmp_str, TRACK_TTEXT_LEN - 1);

strcpy(new_track.catalog, entry_to_add_to->catalog);

new_track.track_no = track_no;

if (!add_cdt_entry(new_track)) {

fprintf(stderr, "Failed to add new track\n");

break;

}

track_no++;

} /* while */

}

15. Функция del_cat_entryудаляет элемент каталога. Никогда не разрешайте хранить дорожки для несуществующего элемента каталога.

static void del_cat_entry(const cdc_entry *entry_to_delete) {

int track_no = 1;

int delete_ok;

display_cdc(entry_to_delete);

if (get_confirm("Delete this entry and all it's tracks? ")) {

do {

delete_ok = del_cdt_entry(entry_to_delete->catalog, track_no);

track_no++;

} while(delete_ok);

if (!del_cdc_entry(entry_to_delete->catalog)) {

fprintf(stderr, "Failed to delete entry\n");

}

}

}

16. Следующая функция — утилита для удаления всех дорожек элемента каталога:

static void del_track_entries(const cdc_entry *entry_to_delete) {

int track_no = 1;

int delete_ok;

display_cdc(entry_to_delete);

if (get_confirm("Delete tracks for this entry? ")) {

do {

delete_ok = del_cdt_entry(entry_to_delete->catalog, track_no);

track_no++;

} while(delete_ok);

}

}

17. Создайте очень простое средство поиска, в котором разрешите пользователю ввести строку и затем поищите элементы каталога, содержащие строку. Поскольку может быть несколько элементов с такой строкой, просто по очереди предлагаются пользователю все найденные:

static cdc_entry find_cat(void) {

cdc_entry item_found;

char tmp_str[TMP_STRING_LEN + 1];

int first_call = 1;

int any_entry_found = 0;

int string ok;

int entry_selected = 0;

do {

string_ok = 1;

printf("Enter string to search for in catalog entry: ");

fgets(tmp_str, TMP_STRING_LEN, stdin);

strip_return(tmp_str);

if (strlen(tmp_str) > CAT_CAT_LEN) {

fprintf(stderr, "Sorry, string too long, maximum %d \

characters\n", CAT_CAT_LEN);

string_ok = 0;

}

} while (!string_ok);

while (!entry_selected) {

item_found = search_cdc_entry(tmp_str, &firstcall);

if (item_found.catalog[0] != '\0') {

any_entry_found = 1;

printf("\n");

display_cdc(&item_found);

if (get_confirm("This entry? ")) {

entry_selected = 1;

}

} else {

if (any_entry_found) printf("Sorry, no more matches found\n");

else printf("Sorry, nothing found\n");

break;

}

}

return(item_found);

}

18. Функция list_tracks— утилита, которая выводит все дорожки для заданного элемента каталога:

static void list_tracks(const cdc_entry *entry_to_use) {

int track_no = 1;

cdt_entry entry_found;

display_cdc(entry_to_use);

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Основы программирования в Linux»

Представляем Вашему вниманию похожие книги на «Основы программирования в Linux» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Основы программирования в Linux»

Обсуждение, отзывы о книге «Основы программирования в Linux» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.