Почему getline не принимает ввод

0

Сверху код работает, но на удивление последний cin.get(con) не ждет ввода и завершает работу программы с принятием любого ввода, почему это происходит так, любезно направьте меня, что не так с моим кодом -

#include<iostream.h>
#include<conio.h>
#include <string.h>
struct country
{
char country[30];
char capital[30];
float income;
};

void main()
{
  country c[3];
  clrscr();
  for( int i=0; i<3 ; i++)
  {
    cout << "\n Country name : ";
    cin.ignore();
    cin.getline(c[i].country, 30);

    cout << "\n Country capital :";
    cin.getline(c[i].capital,30);

    cout << "\n Per capita income :";
    cin >> c[i].income;

  }

char ch = 'y';
char cap[30];
int flag = 0;
cin.ignore();
cout << "\n Enter Capital name : ";
cin.getline(cap, 30);

  for(int k=0; k<3 ; k++)
  {
     flag = 0;
     if(strcmp(c[k].capital,cap)==0)
     {
        flag = 1;
     }
     if(flag==1)
     {
        cout<< "\n" << c[k].country << "\t" << c[k].capital << "\t" << c[k].income << "\n\n" ;
     }
  }
char con[30];
cout << "\n Enter Country name : ";
cin.getline(con,30);
  for(int m=0; m<3 ; m++)
  {
     flag = 0;
     if(strcmp(c[m].country,con)==0)
     {
        flag = 1;
     }
     if(flag==1)
     {
        cout  << c[m].capital << "\t" << c[m].income << "\n" ;
     }
  }
}
  • 0
    вы должны действительно получить более новый компилятор
  • 0
    @Nazar554 Nazar554 Я знаю друга, но я ограничен компилятором Turbo C ++. Боже, помоги мне..
Теги:
turbo-c++

1 ответ

0

Объединение cin.operator<< и getline приводит к странному поведению. Итак, этот код следует изменить

cout << "\n Country capital :";
cin.getline(c[i].capital,30);

cout << "\n Per capita income :";
cin >> c[i].income;

Возможно

cout << "\n Country capital :";
cin.getline(c[i].capital,30);

char buf[50]; //I don't know how long your floats are
cout << "\n Per capita income :";
cin.getline(buf);
c[i].income = atof(buf);  //#include <cstdlib>
  • 0
    Если вы видели код правильно доход является типом данных с плавающей точкой, и я полагаю, что getline () не для числовых значений.
  • 0
    Извините, не видел этого, переделаю код для работы с getline.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню