Последовательно считайте байты до первого нулевого символа. Как и strlen, функция требует указатель на доступную строку с завершающим '\0' и не считает Unicode-символы.
Создание собственной функции для вычисления длины строки
Последовательно считайте байты до первого нулевого символа. Как и strlen, функция требует указатель на доступную строку с завершающим '\0' и не считает Unicode-символы.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Реализовать функцию, аналогичную стандартному strlen, которая возвращает количество символов в переданной строке.
Ответ
Последовательно считайте байты до первого нулевого символа. Как и strlen, функция требует указатель на доступную строку с завершающим '\0' и не считает Unicode-символы.
#include <cstddef>
std::size_t my_strlen(const char* text) {
std::size_t length = 0;
while (text[length] != '\0') ++length;
return length;
}
Для пустой строки результат 0, нулевой терминатор в длину не входит. nullptr и буфер без доступного терминатора нарушают контракт. Если известен лишь размер буфера, нужен ограниченный поиск, а не неограниченное чтение памяти. Время O(n), память O(1).