K&R (52-53). Длина строки

Решение задач на языке программирования C

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

В примере ниже строка, вводимая пользователем, записывается в массив символов. Затем ее длина измеряется с помощью встроенной функции strlen(), после чего с помощью пользовательской функции strlen2().

Обращает на себя внимание то, что завершающий символ нуля в строку не записывался, однако видимо он туда автоматически добавляется. Поэтому цикл while в функции strlen2() работает корректно. Тогда непонятно, почему авторы "вручную" дописывают в конец строки нуль в предыдущем примере (поиск самой длиной строки) при считывании ввода.

#include <stdio.h>
#include <string.h>
 
int strlen2 (char s[]);
 
main() {
	int c, i;
	char s[100]; // строка
 
	// Считывание строки
	i = 0;
	while ((c = getchar()) != '\n') {
		s[i] = c;
		++i;
	}
 
	i = strlen(s); // с помощью библиотечной функции
	printf("%d\n", i);
 
	i = strlen2(s); // с помощью собственной функции
	printf("%d\n", i);
}
 
int strlen2 (char s[]) {
	int i;
 
	i = 0;
	while (s[i] != '\0')
		++i;
 
	return i;
}