Прототип функции strlen:
size_t strlen( const char * string );
Заголовочный файл:
Название | Язык |
---|---|
string.h | С |
cstring | С++ |
Описание
Длина Си-строки определяется по достижению нулевого символа — нуль терминатор. Функция
strlen
видит начало Си-строки и начинает сначала считать количество символов (байтов, отводимых под каждый символ), этот процесс выполняется до тех пор, пока не будет достигнут завершающий нулевой символ. Обратите внимание на то, что завершающий нулевой символ не входит в длину строки. Он является служебным символом, для обозначения завершения Си-строки.
Не путайте размер массива, который содержит строку и длину строки. Например:
char string[100] = "строка";
В данной строке массив имеет размер 100 символов, но строка в этом массиве имеет длину всего 11 символов. Таким образом, если выполнится оператор sizeof(string)
, ответ будет 100, а если — функция strlen(string)
, ответ 6.
Параметры:
- string
Си-строка.
Возвращаемое значение
Длина строки.
Пример: исходный код программы
//пример использования функции strlen #include <iostream> #include <cstring> // для strlen int main() { char input[256]; std::cout << "Введите строку: "; std::cin >> input; std::cout << "Строка " << input << " содержит " << strlen(input) << " символов\n"; return 0; }
Пример работы программы
Строка Созвездие содержит 18 символов
Комментарии
Eduard_P
Не дурите людей!
Эта функция правильно работает только с латиницей. В примере код
считает ввод до первого пробела,(будет считано только первое слово), для считывания сроки с пробелами нужно применить
std::cin >> input;
std::cin.getline(input,80);
Для правильного отображения количества символов в строке и латиницы и кириллицы применяется тип wchar_t. Ниже приведен код, который правильно отображает количество символов в строке (пробел относится к латинице) и вывод будет соответствовать приведенному примеру работы программы.Alex_Gates
это ответ на вопрос Красовского на прямую ответить, что то не выходит.
Alex_Gates
cin читает до пробела… для этого можно использовать getline или gets , там еще и заморочка со стандартами… например в С++ 14 нельзя использовать функцию gets.. + нельзя передать strlen — у символ как параметр можно только чар… ну и такие нюансы…
Krasovsky Savely
А не подскажете почему после пробела данная функция перестает работать (Geany)?
Roman Ilyushkin
Потому ,что пробел равноценен нулю .