cout << "Введите название дисциплины: ";
                  
                  
                      cin.getline(ctemp, 20); strcpy(un[i].clas, ctemp);
                  
                  
                      cout << "Введите количество практических работ: ";
                  
                  
                      cin >> itemp; un[i].count = itemp;
                  
                  
                      cout << "Введите название группы: ";
                  
                  
                      cin.getline(ctemp, 20); strcpy(un[i].gr.group_title, ctemp);
                  
                  
                      cout << "Введите количество студентов в группе: ";
                  
                  
                      cin >> itemp; un[i].gr.st_count = itemp;
                  
                  
                      cout << endl;
                  
                  
                    }
                  
                  
                  
                  
                  
                  Почему эти getline неверно работают? 
                  
                  
                  https://imgur.com/n1YX3Hw
                  
                  
                
В чём неправильность? /что ожидаешь, что получаешь?
У тебя там мусор просто в поток попадает, видимо, от предыдущего ввода, и он летит автоматом в ctemp. Предлагаю использовать https://en.cppreference.com/w/cpp/io/basic_istream/ignore после каждого ввода чтобы сжирать всё оставшееся до следующего перевода строки.
Обсуждают сегодня