Как узнать количество символов в строке c
Перейти к содержимому

Как узнать количество символов в строке c

  • автор:

Как узнать количество символов в строке?

Запись была обновлена

Всем известная функция strlen не обошла стороной и C++, которая призвана определить количество символов в строке типа char.

char str[256] = "Здесь будет какой-то текст от cubook.pro"; Label1->Caption = strlen(str); // => 40

Размер строки в C++ Builder

В C++ Builder есть удобная функция Length(), которая позволяет определить количество символов в строке типа String.

AnsiString str = "Здесь будет какой-то текст от cubook.pro"; Label1->Caption = str.Length(); // => 40

Поделиться
Подготовил материал
Табаков Юрий
Программист

Автор и редактор проекта CuBook.PRO. Главная задача, которую я ставлю перед собой – донести до начинающих программистов удобочитаемый материал. Буду рад выслушать замечания и предложения. Не забываем ставить оценки и делать репосты =)

Минутка юмора

Едет программист на машине, торопится. Обгоняя выходит на встречную, и видя Камаз на пути громко начинает орать: — «Эскейпт, Эскейпт!». Очухался, и видя вокруг себя облака, облегчённо: — «Ладно, хоть засейвился.»

Предложить статью

Самое интересное

  • Log – натуральный логарифм
  • ShellExecute – открыть папку или приложение
  • Pow – возведение числа в степени
  • StringGrid – таблица строк и столбцов
  • Chart – графики и диаграммы

Посчитать количество символов в строке

Хелп. Я только недавно начал изучать С++. Помогите сделать программу. Нужно посчитать количество всех элементов в строке.

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Посчитать количество символов в строке
Объясните как работает этот код. Он должен посчитать количество каждой буквы и вывести в порядке.

Посчитать количество символов в строке
Задание: Дана строка. Подсчитать количество различных символов, которые не являются буквами или.

В строке посчитать количество разных символов
Хелоу гайс,как изменить код, чтобы считались именно разные символы , а не все? #include <iostream>.

Посчитать в строке количество латинских символов
Запросить у пользователя строку и посчитать в ней количество символов латинского алфавита

Регистрация: 11.06.2008
Сообщений: 56

ЦитатаСообщение от kuidreS Посмотреть сообщение

Хелп. Я только недавно начал изучать С++. Помогите сделать программу. Нужно посчитать количество всех элементов в строке.

1 2 3 4 5
#include . char* str = "Hello World"; int count = strlen(str); printf("Количество символов в строке \"Hello World\" = %u\n", count);

2021 / 1620 / 489
Регистрация: 31.05.2009
Сообщений: 3,005

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
#include int strLength(const char* str) { int size = 0; while(*str++) ++size; return size; } int main() { const char* str = "asdasdqwdqd"; printf( "%d\n", strLength(str) ); return 0; }

Регистрация: 28.03.2010
Сообщений: 37
Посмотрите пожалуйста и скажите где ошибка:

1 2 3 4 5 6 7 8 9 10 11 12 13
#include #include #include using namespace std; void main() { char *str; cout"Please, enter the string: "; cin>>str; int count = strlen(str); cout"Sum of elements= "count; getch(); }

Регистрация: 13.05.2010
Сообщений: 7

1 2 3 4 5 6 7 8 9 10 11 12 13
#include #include #include using namespace std; int main() { char *str; cout"Please, enter the string: "; cin>>str; int count = strlen(str); cout"Sum of elements= "count; getch(); return 0; }

Функция main() должна возвращать значение типа int.
Регистрация: 11.06.2008
Сообщений: 56

ЦитатаСообщение от kuidreS Посмотреть сообщение

Посмотрите пожалуйста и скажите где ошибка
В Вашем случае надо выделить свободную память для указателя, определив его размер:

1 2 3 4 5 6 7 8
char* str = new char[80]; cout  "Please, enter the string: "; cin >> str; int count = strlen(str); cout  "Sum of elements= "  count; getch(); delete [] str; return;

Добавлено через 2 минуты

ЦитатаСообщение от tony733 Посмотреть сообщение

Функция main() должна возвращать значение типа int.
Необаязательно. Она может возвращать и void.
Но в конец программы нужно вставить ключевое слово

return

Регистрация: 13.05.2010
Сообщений: 7

ЦитатаСообщение от kuidreS Посмотреть сообщение

Посмотрите пожалуйста и скажите где ошибка:

1 2 3 4 5 6 7 8 9 10 11 12 13
#include #include #include using namespace std; void main() { char *str; cout"Please, enter the string: "; cin>>str; int count = strlen(str); cout"Sum of elements= "count; getch(); }

ЦитатаСообщение от Cooler2 Посмотреть сообщение

В Вашем случае надо выделить свободную память для указателя, определив его размер:

1 2 3 4 5 6 7
char* str = new char[80]; cout  "Please, enter the string: "; cin >> str; int count = strlen(str); cout  "Sum of elements= "  count; getch(); delete [] str;

насколько я понимаю при такой операции память выделится вот здесь
cin>>str;

Добавлено через 3 минуты

ЦитатаСообщение от Cooler2 Посмотреть сообщение

Необаязательно. Она может возвращать и void.
Но в конец программы нужно вставить ключевое слово

Ну можно наверно, не спорю, но вроде как стандартнее записать int) Хотя не буду особо спорить, возможно я неправ)

Эксперт PythonЭксперт JavaЭксперт CЭксперт С++

12243 / 7373 / 1734
Регистрация: 25.07.2009
Сообщений: 13,521

ЦитатаСообщение от tony733 Посмотреть сообщение

насколько я понимаю при такой операции память выделится вот здесь
cin>>str;

Не правильно понимаете. Ничего тут не должно выделяться. Мало того, при таком подходе, если память и выделена, но меньше, чем вводимая строка, будет переполнение.

Регистрация: 11.06.2008
Сообщений: 56
kuidreS,
Рекомендую вместо

cin >> str;

Воспользоваться функцией получения всей введенной строки:

cin.getline(str, 80, '\n');

Где str — указатель под который выделена память в свободном хранилище,
80 — максимальное количество символов для прочтения
‘\n’ — символ, прекращающий процесс считывания строки. (Тут можно не только этот символ использовать).

Регистрация: 13.05.2010
Сообщений: 7

ЦитатаСообщение от easybudda Посмотреть сообщение

Не правильно понимаете. Ничего тут не должно выделяться. Мало того, при таком подходе, если память и выделена, но меньше, чем вводимая строка, будет переполнение.

Спасибо за разъяснение, терь буду знать) раз уж начали разговор- не могли бы вы посмотреть вот это?
https://www.cyberforum.ru/cpp-. 29329.html

Регистрация: 27.05.2010
Сообщений: 9
и наконец окончательный вариант:

1 2 3 4 5 6 7 8 9 10 11 12 13
#include #include #include using namespace std; void main() { char* str = new char[80]; cout"Please, enter the string: "; cin.getline(str, 80, '\n'); int count = strlen(str); cout"Sum of elements= "count; getch(); }

Регистрация: 21.03.2015
Сообщений: 3

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
#define _CRT_SECURE_NO_WARNINGS #include "stdafx.h" #include using namespace std; const int n = 80; void Strin(char[]); void main() { setlocale(LC_ALL, "RUS"); char str[n]; cout  "enter string"  endl; gets(str); Strin(str); system("pause"); } void Strin(char str[]) { int counter = 0; for (int i = 0; i  n; i++) { if (isalnum(str[i])) { if (i != 0) { int k; for (k = i - 1; k != 0; k--) { if (str[i] == str[k]) break; } if (str[i] == str[k]) continue; } cout  str[i]  "="; for (int j = i + 1; j  n - 1; j++) { if (str[i] == str[j]) { counter++; } } cout  counter + 1  endl; counter = 0; } } }

Регистрация: 18.03.2015
Сообщений: 5

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
# include # include using namespace std; int main() { char mas1[5]; cout"Vvedite stroku "; gets(mas1); coutendl; for(int i=0;i5;i++) coutmas1[i]; _getch(); return 0; }

не могу никак посчитать сколько символов в строке которую ввели

Добавлено через 53 минуты
нашол ответ )) #include

Добавлено через 4 минуты

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
# include # include #include using namespace std; int main() { setlocale(LC_ALL, "RUS"); char mas1[100]; char len; cout"Vvedite stroku "; gets(mas1); coutendl; len = strlen(mas1); for(int i=0;ilen;i++) { coutmas1[i]; } _getch(); return 0; }

Подсчет символов, строк и слов

Программа считает количество введенных пользователем символов, строк и слов. Чтобы программа корректно закончила работу и правильно посчитала, после набора строк надо перейти на новую строку, после чего нажать Ctrl + D (по крайней мере в терминале Linux).

#include int main() < char ch, flag=-1; unsigned c=0; // символы unsigned w=0; // слова unsigned n=0; // строки while ((ch = getchar()) != EOF) < if (ch == '\n') n++; else c++; if (ch == ' ' || ch == '\n') flag = -1; else if (flag == -1) < flag = 1; w++; >> printf("Символы: %u\n", c); printf(" Слова: %u\n", w); printf(" Строки: %u\n", n); >
one two three four Символы: 16 Слова: 4 Строки: 3

X Скрыть Наверх

Решение задач на языке C

Подсчитать количество слов в строке (Си)

Слово — последовательность символов, разделенных пробелами. Под пробелами тут будем понимать символ пробела (не табуляции или чего-то еще). Посчитать число пробелов (и групп пробелов) — неправильно. Ведь строка без пробелов может быть пустой, а может содержать одно слово. Строка с одним словом может содержать ноль пробелов, а также 1 или 2 группы пробелов (перед и после слова). Правильно — считать пары <группу пробелов> Решение будет таким: 1. Считаем с текущей (изначально нулевой) позиции в строке длину группы пробелов, прибавляем ее к текущей позиции. За счет этого группа «пропущена».
2. Считаем с текущей позиции длину группы непробельных символов ( word_length ).
3. Если word_length болшье нуля — увеличиваем счетчик слов. Прибавляем длину слова к текущей позиции — за счет этого слово «пропущено».
4. Процесс повторяется пока счетчик не станет больше длины строки. Ясно что подсчет пробелов и непробелов — это две разные функции, которые отличаются лишь оператором сравнения текущего символа. Красивое решение заключается в передаче этой функции в качестве параметра указателя на функцию сравнения. Функции сравнения при этом можно описать так:

int is_space(char c) < return c == ' '; >int is_not_space(char c)

Имея их совсем несложно добавить к пробельным символам что-то еще — табуляции, короткие пробелы, переводы строки т.п. Функция подсчета тогда может быть описана так:

int count_start_if(char* str, int (*pred)(char)) < int count = 0; while (*str != 0) < if (pred(*str)) < count++; str++; >else break; > return count; >

Первым аргументом она принимает указатель, однако в качестве него может быть передана подстрока так: &str[i] — передаем часть строки, начиная с i -того символа. Исходный код программы целиком:

#include #include #include #include int is_space(char c) < return c == ' '; >int is_not_space(char c) < return 0 == is_space(c); >int count_start_if(char* str, int (*pred)(char)) < int count = 0; while (*str != 0) < if (pred(*str)) < count++; str++; >else break; > return count; > int count_words(char* str) < int length = strlen(str); int count = 0; int i = 0; while (1) < int spaces_count = count_start_if(&str[i], is_space); i += spaces_count; if (i >= length) < break; >int word_length = count_start_if(&str[i], is_not_space); if (word_length > 0) < count++; >i += word_length; if (i >= length) < break; >> return count; > int main()

Пример выполнения программы:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *