Gremlin92
@Gremlin92
Ленивый и безъинициативный

Как пробежаться подстрокой по строке до конца?

Использую такой код
int N 8;
    char str_[N + 1];//подстрока
    str_[N] = '\0';
    unsigned char* buffer;//строка
    int i = 0;
    while (i<=strlen((char*)buffer))
        {
            strncpy_s(str_, (char*)(buffer+i), N);
            i += 8;
        }

Считайте что массив buffer заполнен
  • Вопрос задан
  • 62 просмотра
Решения вопроса 1
Проблемы в коде:
  • Потенциальный выход за границу (res2001)
  • strncpy_s — опять кто-то пишет на Visual C++. Функцию заменить, см. ниже
  • Сейчас длина буфера пересчитывается каждый раз в цикле — без комментариев
  • Если это не строка, а буфер, то он не должен заканчиваться на \0, и для него не должны работать строковые операции. Для подстроки нужно выделить ровно 8 байт. Размер большого буфера нужно взять откуда-то отдельно, не через strlen. Для копирования использовать std::copy
  • Пусть подстрока будет тоже unsigned char. char должен использоваться для текста, а не для байтов
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы