Я пытался ввести данные с gets()
функция, но всякий раз, когда выполнение программы добраться до залогового удержания с gets
это игнорирует.
Когда я использую gets()
без предыдущего ввода данных, он работает правильно. Но когда я использую его после ввода данных, возникает проблема.
Вот код, в котором он используется после предыдущего ввода данных (поэтому при выполнении я не могу вводить данные в строку):
int main() {
char str[255];
int a = 0;
cin >> a;
if(a == 1) {
gets(str);
cout << "\n" << str << endl;
}
}
Как я мог это исправить?
NB: то же самое происходит с cin.getline
После
cin >>a
когда вы вводите a
и введите, есть также \n
персонаж оставлен cin
Поэтому, когда вы используете cin.getline()
или же gets(str)
он будет читать этот символ новой строки.
попробуйте следующее:
cin >>a;
cin.ignore(); //^^this is necessary
if(a==1){
gets(str);
}
Вам лучше использовать C ++ способ чтения ввода:
cin >> a;
cin.ignore();
string str;
if (a == 1)
{
getline(cin, str);
}
Других решений пока нет …