Учитывая начальные и конечные индексы, как я могу скопировать часть строки в C?

В C, как я могу скопировать строку с индексами начала и конца, чтобы строка копировалась только частично (от начального индекса до конечного индекса)?

Это было бы похоже на 'C string copy' strcpy, но с индексом начала и конца.

3 ответа

Решение

Вы проверяли strncpy?

char * strncpy (char * destination, const char * source, size_t num);

Вы должны понимать, что начало и конец фактически определяет количество байтов, которые будут скопированы из одного места в другое.

Используйте strncpy

например

strncpy(dest, src + beginIndex, endIndex - beginIndex);

Это предполагает, что вы

  1. Утверждено, что dest достаточно велик.
  2. endIndex больше, чем beginIndex
  3. beginIndex меньше чем strlen(src)
  4. endIndex меньше чем strlen(src)

Просто используйте memcpy.

Если место назначения недостаточно велико, strncpy не прекратит работу с нулевым значением. если назначение огромно по сравнению с источником, strncpy просто заполняет назначение нулями после строки. strncpy не имеет смысла и не подходит для копирования строк.

strncpy похож на memcpy, за исключением того, что он заполняет пункт назначения нулями, как только видит его в источнике. Это абсолютно бесполезно для строковых операций. Это исправлено с 0 дополненными записями.

Другие вопросы по тегам