Моя программа пропускает кучу кода, когда я включаю несколько структур внутри структуры - PullRequest
0 голосов
/ 18 октября 2019

Я пытаюсь изучать структуры в C ++. Когда я запускаю свой код следующим образом:

#include<iostream>
using namespace std;

struct person{
    char firstName[50];
    int age;
    float gradYear;
};
int main(){
    person p1;

    cout << "Whats your FIRST name?";
    cin.get(p1.firstName, 50);
    cout << "Whats your AGE?";
    cin >> p1.age;
    cout << "Whats your GRADUATION YEAR?";
    cin >> p1.gradYear;

    cout << "Displaying Your Information . . . " << endl;
    cout << "First Name: " << p1.firstName << endl;
    cout << "Age: " << p1.age << endl;
    cout << "Graduation Year: " << p1.age << endl;

    return 0;
}

код работает так, как я хочу, но когда я запускаю код следующим образом:

#include<iostream>
using namespace std;

struct person{
    char firstName[50];
    char lastName[50];
    int age;
    char branch[50];
    float gradYear;
};
int main(){
    person p1;

    cout << "Whats your FIRST name?";
    cin.get(p1.firstName, 50);
    cout << "Whats your LAST name?";
    cin.get(p1.lastName, 50);
    cout << "Whats your AGE?";
    cin >> p1.age;
    cout << "Are you Corps or Civilian?";
    cin >> p1.branch;
    cout << "Whats your GRADUATION YEAR?";
    cin >> p1.gradYear;

    cout << "Displaying Your Information . . . " << endl;
    cout << "First Name: " << p1.firstName << endl;
    cout << "Last Name: " << p1.lastName << endl;
    cout << "Age: " << p1.age << endl;
    cout << "Branch: " << p1.branch << endl;
    cout << "Graduation Year: " << p1.age << endl;

    return 0;
}

код выводит информацию послеЯ ввожу первое имя. Почему это происходит, и как я могу заставить его работать по-другому?

1 Ответ

1 голос
/ 18 октября 2019

Это происходит потому, что метод cin.get() вводит имя, а когда вы нажимаете Enter, ввод вводится во все остальные входы. это неожиданное поведение ...

вы можете преодолеть это, написав getch() между входами.

Я имею в виду ..

    cout << "Whats your FIRST name?"; 
cin.get(p1.firstName, 50); 
    getch();
    cout << "Whats your LAST name?"; 
cin.get(p1.lastName, 50);
    getch();
    cout << "Whats your AGE?"; 
    cin >> p1.age; 
    getch();
    cout << "Are you Corps or Civilian?";
    cin >> p1.branch;
    getch();
    cout << "Whats your GRADUATION YEAR?";
    cin >> p1.gradYear;
    getch();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...