Чем отличаются две реализации strlen()?

Видел такую реализацию strlen:
size_t strlen(char *str) {
	return (char*)memchr(str, '\0', -1) - str;
}

Но эта реализация не выдает правильных значений. Написал сам:
size_t strlen(char *str) {
	int count = 0;
	while(str[count] != '\0'){
		++count;
	}
	return count - 1;

Чем плоха моя реализация и почему не работает первая?
  • Вопрос задан
  • 1452 просмотра
Пригласить эксперта
Ответы на вопрос 2
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Но эта реализация не выдает правильных значений.

А должна бы. Что же она выдаёт?
Ответ написан
Комментировать
@Dvvarreyn
Понятием длины отличаются.
Если результатом индексировать строку, то в первом случае получим первый встретившийся '\0', а во втором — элемент перед первым '\0'.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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