2017-03-26 24 views
-2

このプログラムでは、入力時に名前とエリアのフィールドをスキップします。 私はgets()を文字列(name)を入力しようとしましたが、emp noの後もnameをスキップします。 このプログラムでは、入力時に名前と領域のフィールドはスキップされます。 私はgets()を文字列(name)を入力しようとしましたが、emp noの後もnameをスキップします。C++入力エラー

#include<iostream> 
    #include<stdio.h> 
    #include<string.h> 
    using namespace std; 
    struct addr 
     { 
      int houseno; 
      char area[20]; 
      char city[20]; 
      char state[20]; 
     }; 
    struct Emp 
     { 
      int empno; 
      char name[20]; 
      char desig[10]; 
      addr address; 
      float basic; 
     }worker; 
    int main() 
    { 
     cout<<"Employee no: "; 
     cin>>worker.empno; 
     cout<<"Name: "; 
     cin.getline(worker.name,20); 
     cout<<"Designation: "; 
     cin.getline(worker.desig,10); 
     cout<<"Enter Address: "<<endl; 
     cout<<"1. House no. :"; 
     cin>>worker.address.houseno; 
     cout<<"2. Area: "; 
     cin.getline(worker.address.area,20); 
     cout<<"3. City: "; 
     cin.getline(worker.address.city,20); 
     cout<<"4. State: "; 
     cin.getline(worker.address.state,20); 
     cout<<"Basic Pay: "; 
     cin>>worker.basic; 
     cout<<endl; 
     return 0; 
    } 
+4

あなたが真剣に取りたい場合は、タイトルからALL CAPSを削除してください。それは一般的にインターネットコミュニティで叫ぶのと同じように解釈されます。 – zett42

+0

ok ...アドバイスありがとう –

答えて

1

整数変数の入力を取得した後、getline()関数にcin.ignore()を使用する必要があります。 ここにあなたの修正版があります

#include<iostream> 
#include<stdio.h> 
#include<string.h> 
using namespace std; 
struct addr 
{ 
    int houseno; 
    char area[20]; 
    char city[20]; 
    char state[20]; 
}; 
struct Emp 
{ 
    int empno; 
    char name[20]; 
    char desig[10]; 
    addr address; 
    float basic; 
}worker; 
int main() 
{ 
    cout << "Employee no: "; 
    cin >> worker.empno; 
    cin.ignore(); //use it 
    cout << "Name: "; 
    cin.getline(worker.name, 20); 
    cout << "Designation: "; 
    cin.getline(worker.desig, 10); 
    cout << "Enter Address: " << endl; 
    cout << "1. House no. :"; 
    cin >> worker.address.houseno; 
    cin.ignore(); //because houseno is also integer 
    cout << "2. Area: "; 
    cin.getline(worker.address.area, 20); 
    cout << "3. City: "; 
    cin.getline(worker.address.city, 20); 
    cout << "4. State: "; 
    cin.getline(worker.address.state, 20); 
    cout << "Basic Pay: "; 
    cin >> worker.basic; 
    cout << endl; 
    return 0; 
}