Основы программирования в Linux
Основы программирования в Linux читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
menu_options current_option; cdc_entry current_cdc_entry; int command_result; memset(&current_cdc_entry, ' ', sizeof(current_cdc_entry));if (argc >1) { command_result = command_mode(argc, argv); exit(command_result); } announce(); if (!database_initialize(0)) { fprintf(stderr, "Sorry, unable to initialize databasen"); fprintf(stderr, "To create a new database use %s -in", argv[0]); exit(EXIT_FAILURE); }5. Теперь вы готовы обрабатывать ввод пользователя. Вы остаетесь в цикле, запрашивая пункт меню и обрабатывая его до тех пор, пока пользователь не выберет выход. Обратите вниманий на то, что вы передаете структуру
current_cdc_entryshow_menu while (current_option != mo_exit) { current_option = show_menu(&current_cdc_entry); switch(current_option) { case mo_add_cat: if (enter_new_cat_entry(&current_cdc_entry)) { if (!add_cdc_entry(current_cdc_entry)) { fprintf(stderr, "Failed to add new entryn"); memset(&current_cdc_entry, ' ', sizeof(current_cdc_entry)); } } break; case mo_add_tracks: enter_new_track_entries(&current_cdc_entry); break; case mo_del_cat: del_cat_entry(&current_cdc_entry); break; case mo_find_cat: current_cdc_entry = find_cat(); break; case mo_list_cat_tracks: list_tracks(&current_cdc_entry); break; case mo_del_tracks: del_track_entries(&current_cdc_entry); break; case mo_count_entries: count_all_entries(); break; case mo_exit: break; case mo_invalid: break; default: break; } /* switch */ } /* while */ 6. Когда цикл в функции
mainannounce database_close(); exit(EXIT_SUCCESS);} /* main */static void announce(void) { printf("nnWelcome to the demonstration CD catalog database programn");}7. Здесь вы реализуете функцию
show_menustatic menu_options show_menu(const cdc_entry *cdc_selected) { char tmp_str[TMP_STRING_LEN + 1]; menu_options option_chosen = mo_invalid; while (option_chosen == mo_invalid) { if (cdc_selected->catalog[0]) { printf("nnCurrent entry: "); printf("%s, %s, %a, %sn", cdc_selected->catalog, cdc_selected->title, cdc_selected->type, cdc_selected->artist); printf("n"); printf("1 - add new CDn"); printf("2 — search for a CDn"); printf("3 — count the CDs and tracks in the databasen"); printf("4 — re-enter tracks for current CDn"); printf("5 - delete this CD, and all its tracksn"); printf("6 - list tracks for this CDn"); printf("q — quitn"); printf("nOption: "); fgets(tmp_str, TMP_STRING_LEN, stdin); switch(tmp_str[0]) { case '1': option_chosen = mo_add_cat; break; case '2': option_chosen = mo_find_cat; break; case '3': option_chosen = mo_count_entries; break; case '4': option_chosen = mo_add_tracks;
