Учитывая начальные и конечные индексы, как я могу скопировать часть строки в 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);
Это предполагает, что вы
- Утверждено, что
dest
достаточно велик. endIndex
больше, чемbeginIndex
beginIndex
меньше чемstrlen(src)
endIndex
меньше чемstrlen(src)
Просто используйте memcpy.
Если место назначения недостаточно велико, strncpy не прекратит работу с нулевым значением. если назначение огромно по сравнению с источником, strncpy просто заполняет назначение нулями после строки. strncpy не имеет смысла и не подходит для копирования строк.
strncpy похож на memcpy, за исключением того, что он заполняет пункт назначения нулями, как только видит его в источнике. Это абсолютно бесполезно для строковых операций. Это исправлено с 0 дополненными записями.