strlen в C/C++: длинна строки
👋 Привет! В этой статье мы поговорим о функции strlen. Эта функция подсчитывает количество символов в Си-строке. В начале мы рассмотрим несколько примеров использования этой функции, затем реализу ем её сами, а в конце вы найдете упражнения для закрепления материала.
Как получить количество символов в языке C/C++
Для того, чтобы в C получить количество символов в строке, можно воспользоваться функцией strlen. Эта функция доступна после подключения файла <string.h>. Прототип этой функции выглядит следующим образом:
size_t strlen ( const char * str );- Единственным аргументом эта функция принимает указатель на нуль-терминированную строку (массив символов, который заканчивается специальным символом
'\0'). - Функция возвращает количество символов в строке, не учитывая
'\0'.
Давайте посмотрим на пример:
#include <stdio.h>
#include <string.h>
int main() {
char str[64] = "strlen in C";
int n = strlen(str);
printf("n = %d", n);
return 0;
}Вывод:
n = 11Как можете видеть, strlen вернула количество символов, которые хранятся в строке str.
Функция strlen никак не учитывает размер массива, в котором хранится строка. Она только учитывает количество байтов от начала строки до '\0'. Давайте посмотрим на еще один пример, в котором это наглядно видно:
#include <stdio.h>
#include <string.h>
int main() {
char str[] = {'1', '2', '3', '\0', '4', '5'};
int n = strlen(str);
printf("n = %d", n);
return 0;
}Вывод:
n = 3Здесь программа выводит 3, не учитывая символы '4' и '5', расположенные после '\0'.
Что будет выведено на экран?
#include <stdio.h>
#include <string.h>
int main() {
char str1[] = {'H', 'e', 'l', 'l', 'o', '\0', ' ', 'W', 'o', 'r', 'l', 'd', '!', '\0'};
char str2[] = "Hello";
int result = strlen(str1) + strlen(str2);
printf("%d", result);
return 0;
}Как реализовать strlen самому
Теперь давайте попробуем реализовать эту функцию сами, чтобы лучше понять, как она работает. Для этого мы будем бежать по строке в цикле до тех пор, пока не встретим '\0':
#include <stdio.h>
int my_strlen(const char* s) {
int result = 0;
while (*s != '\0') {
s++;
result++;
}
return result;
}
int main() {
char str[] = "string in C";
int n = my_strlen(str);
printf("n = %d", n);
return 0;
}Вывод программы:
n = 11Программа выводит 11, что не удивительно. Наша версия функции strlen работает аналогично встроенной.
Упражнения
-
Использование
strlen:
Напишите программу на C, которая запрашивает у пользователя строку и, используя функциюstrlen, определяет и выводит длину этой строки. Программа также должна выводить введенную пользователем строку. -
Создание своей версии
strlen:
На основе представленного в статье примера создайте свою версию функцииstrlenи протестируйте её на разных строках. Сравните результаты работы вашей функции и стандартной функцииstrlen. -
Работа с множественными нуль-терминированными символами:
Напишите программу, которая создает строку, содержащую несколько символов'\0'внутри, и демонстрирует различия (или их отсутствие) в подсчете символов между вашей версиейstrlenи стандартной функциейstrlen.
Если хотите всегда быть в курсе последних новостей в мире программирования и IT, подписываетесь на мой Telegram-канал, где я делюсь свежими статьями, новостями и полезными советами. Буду рад видеть вас среди подписчиков!
Обсуждение