С++ не работает программа, когда вводится более 99 одинаковых чисел

Суть задачи заключается в выведении числа символов введенных друг за другом. То есть: 11111231. Ответ будет 5. Моя программа не выводит ответ, когда введено более 99 одинаковых цифр. То есть : 1111111111..... Ответ будет 1. Помогите пожалуйста сделать так, чтобы программа считала цифры вне зависимости от их количества.

SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int i, l = 1, n = 1;
char string[2500];
cout << "Введите числа: ";
cin.get(string, 2500);
char str_len = strlen(string);
for (i = 1; i < str_len; i++)
{
    if (string[i] == string[i - 1])
    {
        l++;
    }
    else
       {
            l = 1;
        }
    if (l > n > 0)
    {
        n = l;
    }
}
cout << "[===============]" << endl;
cout << "Идущих подряд чисел: ";
printf("%d", n);
int count = strlen(string);
cout << endl;
cout << "[===============]" << endl;
cout << "Всего символов в строке: ";
printf("%u\n", count);
return 0;

}


Ответы (1 шт):

Автор решения: DmitryK

Скорее всего у вас проблема в другом. Вы длину строки сохраняете в переменной char str_len = strlen(string); Она может хранить значения от -128 до 127. Если длина строки у вас превышает 127 символов, то получается переполнение переменной и UB программы.
Замените на int str_len = strlen(string);.

→ Ссылка