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-канал, где я делюсь свежими статьями, новостями и полезными советами. Буду рад видеть вас среди подписчиков!
Обсуждение