Жанры книг
Мы в соц.сетях
ParaKnig📚 » Компьютеры и Интернет » Интернет » Основы программирования в Linux - Мэтью Нейл
<< На главную

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

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

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 127 128 129 130 131 132 133 134 135 ... 324
Перейти на страницу:

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

  memset(&amp;new_track, '', sizeof(new_track));

  existing_track = get_cdt_entry(entry_to_add_to-&gt;catalog,

   track_no);

  if (existing_track.catalog[0]) {

   printf(&quot;tTrack %d: %sn&quot;, track_no,

    existing_track.track_txt);

   printf(&quot;tNew text: &quot;);

  } else {

   printf(&quot;tTrack %d description: &quot;, track_no);

  }

  fgets(tmp_str, TMP_STRING_LEN, stdin);

  strip_return(tmp_str);

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

  if (strlen(tmp_str) == 0) {

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

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

    break;

   } else {

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

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

    track_no++;

    continue;

   }

  }

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

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

   while (del_cdt_entry(entry_to_add_to-&gt;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-&gt;catalog);

  new_track.track_no = track_no;

  if (!add_cdt_entry(new_track)) {

   fprintf(stderr, &quot;Failed to add new trackn&quot;);

   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(&quot;Delete this entry and all it's tracks? &quot;)) {

  do {

   delete_ok = del_cdt_entry(entry_to_delete-&gt;catalog, track_no);

   track_no++;

  } while(delete_ok);

  if (!del_cdc_entry(entry_to_delete-&gt;catalog)) {

   fprintf(stderr, &quot;Failed to delete entryn&quot;);

  }

 }

}

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(&quot;Delete tracks for this entry? &quot;)) {

  do {

   delete_ok = del_cdt_entry(entry_to_delete-&gt;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(&quot;Enter string to search for in catalog entry: &quot;);

  fgets(tmp_str, TMP_STRING_LEN, stdin);

  strip_return(tmp_str);

  if (strlen(tmp_str) &gt; CAT_CAT_LEN) {

   fprintf(stderr, &quot;Sorry, string too long, maximum %d

    charactersn&quot;, CAT_CAT_LEN);

   string_ok = 0;

  }

 } while (!string_ok);

 while (!entry_selected) {

1 ... 127 128 129 130 131 132 133 134 135 ... 324
Перейти на страницу:
На этой странице вы можете бесплатно читать книгу Основы программирования в Linux - Мэтью Нейл бесплатно.
Комментарии
Открыть боковую панель
Комментарии
Лариса
Лариса 11.03.2026 - 20:17
Странно,здесь имя девочки Аграфена,а на других сайтах я прослушала три книги этого цикла с именем Дарвина.Зачем менять имя и путать читателей? Опечатка- не Дарвина,  а  Дарина.
Григорий
Григорий 09.04.2025 - 22:24
Лучшая книга всех времен
Женя
Женя 02.04.2025 - 16:08
Любимая книга