Error: Run-Time Check Failure #2 - Stack around the variable 'a' was corrupted

Рейтинг: 0Ответов: 1Опубликовано: 18.03.2023

Нужно посчитать количество символов b в массиве a, выдаёт ошибку Run-Time Check Failure #2 - Stack around the variable 'a' was corrupted. Вот код:

#include <iostream>
#include <string>

using namespace std;


int main()
{

    setlocale(LC_ALL, "ru");

    char a[] = "";
    char b;

    cin >> a;
    cin >> b;

    int count = 0, cinso = 0;

    for (count = 0; a[count] != '\0';)
    {

        count++;

        if (a[count] == b)
        {
            cinso++;
        }
    }

    cout << cinso << endl;

} 

Ответы

▲ 0Принят

Итак, выделяем место в памяти под строку a...

char a[] = "";

Выделен 1 (прописью: один) байт.

А сколько вы в нее читаете в

cin >> a;

Если больше 0 (прописью: нуля) символов, у вас проблемы. Потому что один байт надо оставить для нулевого символа...

Почему бы вам не указать размер массива для чтения побольше?