Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 03.07.2014
Сообщений: 14

Как работает функции подсчёта символов в строке

24.07.2014, 23:56. Показов 784. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Раньше программировал на VB. Сейчас изучаю С++.
Встретил в интернете эти функции подсчёта симолов в строке.
С первой всё понятно. Перебираем символы пока не встретим '\0'.
C++
1
2
3
4
5
int strlen(char s[]){
    int length = 0;
    for (; s[length] != '\0'; length++);
    return (length);
}
Но почему работают две эти?
C++
1
2
3
4
5
int strlen(char *s){
    int length;
    for (length = 0; *s; length++, s++);
    return length;
}
C++
1
2
3
4
5
int strlen(char *s){
    char *p = s;
    while (*p) p++;
    return (p - s);
}
Сломал голову. Поясните как это работает?

С уважением Виктор.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.07.2014, 23:56
Ответы с готовыми решениями:

Программа для подсчета символов в строке с указателями
Добрый день. Есть вот такая программа: #include <stdio.h> int quan (char *s) { int i=0; while((*s+i)!=EOF) { i++; ...

Написать функцию для подсчета символов в строке
Требуется написать функцию для подсчета символов в строке. Я вроде бы написал.. Но Функция вычисляет правильно при первом вызове, при...

Машина Тьюринга для подсчета заданных символов в строке
построить машину тьюринга,ответ пожайулста можно в виде таблицы дабы понятнее было Правила форума: 5.18. Запрещено размещать задания и...

3
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
25.07.2014, 00:18
maltsevvv,
'\0' - это символ с кодом 0. В C++ выражение в while(*p) приводится к bool, то есть в случае, если в *p - ноль, то он приведется к false и мы выйдем из цикла. Это проверка на конец строки. В другом цикле аналогично.
1
2688 / 2260 / 244
Регистрация: 03.07.2012
Сообщений: 8,231
Записей в блоге: 1
25.07.2014, 00:19
Вопрос на уровне "почему 7*8=56?" В каком месте они не должны работать и почему?
Возьми строку "12" и по шагам опиши, какие значения переменных будут на каждом шаге.
0
0 / 0 / 0
Регистрация: 03.07.2014
Сообщений: 14
25.07.2014, 00:26  [ТС]
DrOffset, спасибо.

Тема закрыта.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.07.2014, 00:26
Помогаю со студенческими работами здесь

Написать функцию для подсчета нецифровых символов в строке
Подскажите пожалуйста, как написать функцию для подсчета нецифровых символов в строке. Сам не могу догадаться как учесть все нецифровые...

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

Не работает функция подсчета введенных символов
Моя функция выводит не то количество символов. Помогите разобраться. int dlina(char*s1) { int i; for(i=0;s1!='0';i++); ...

Подсчет символов в строке, как работает? ( С++ )
Доброго времени суток! Помогите начинающему: Есть код который читает символы - #include <iostream> int main () { ...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru