Почему неправильно считает количество людей, которые живут на введенной с клавиатуры улице?

Массив структур метит информацию о 30 студентов: фамилия; имя; номер группы; адрес прописки; пол. Считать данные с файла и подсчитать количество студентов, которые прописаны на заданной с клавиатуры улице.

 struct Students
    {
        char name[20];
        char surname[20];
        char adress[40];
        char gender[15];
        int numberofgroup;
    };
    
    int main()
    {
        SetConsoleOutputCP(1251);
        SetConsoleCP(1251);
    
        bool ReadFile(Students * &arr_Students, int& size);
        void print(Students * arr_Students, int size);
    
        int size;
        Students* arr_Students;
        if (ReadFile(arr_Students, size))
            print(arr_Students, size);
        else
            cout << "Error opening file!" << endl;
    
        cin.get();
        return 0;
    }
    
    bool ReadFile(Students*& arr_Students, int& size)
    {
        ifstream fin("Students.txt");
        if (!fin)
            return false;
    
        (fin >> size).get();
    
        arr_Students = new Students[size];
    
        for (int i = 0; i < size; i++)
        {
            fin.getline(arr_Students[i].name, 20);
            fin.getline(arr_Students[i].surname, 20);
            fin.getline(arr_Students[i].adress, 40);
            fin.getline(arr_Students[i].gender, 15);
            fin >> arr_Students[i].numberofgroup;
            fin >> arr_Students[i].adress;
            fin.get();
            return true;
        }
        fin.close();
    
    }
    void print(Students* arr_Students, int size)
    {
        char street;
        cin>>street
        cout<<"enter street"

        for (int i = 0; 0 < size; i++)
        {
            while (getline(arr_Students[i].adress, 40)
            {
                if (street == arr_Students[i].adress);
                cout << "Number of student who live in street:" << size;
            }
    }

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

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

У Вас в функции print происходят воистину ужасные вещи:)

void print(Students* arr_Students, int size)
{
    // Здесь нужен массив для хранения строки, а не один символ
    char street[40];

    // Снаала приглашение на ввод, а потом сам ввод
    cout << "enter street: ";
    cin >> street;

    // Что за проверка `0 < size`. Нужно сравнивать счетчик
    for (int i = 0; i < size; i++)
    {
        // Если строки одинаковые, то strcmp возвращает 0
        if (strcmp(street, arr_Students[i].adress) == 0)
            cout << "Number of student who live in street: " << size << endl;
}

P.S. Не забудьте подключить cstring.

→ Ссылка