简单员工数据库程序

时间:2018-12-03 19:54:55

标签: c++

我正在尝试构建新员工数据库程序。 这是问题所在;当main()中的计数器“ i”变为“ 1”时,将跳过循环的第一行;换句话说,它不等待用户输入“名称”字符串的值。当我使用“ cin”而不是“ gets”时,没有问题...为什么会这样?我使用的是Ubuntu 16.04。

#include <iostream>
#include <cstdio>
using namespace std;
void enter();
void report();
    char name[2][30],salary[2][30];
int main()
{
    int i;
    for(i=0;i<2;i++){
        cout<< "Name:"<<'\n';
        gets(name[i]);
        cout<< "Salary:"<<'\n'; cin>>(salary[i]);
    }
    report();
    return 0;
}
void report()
{
        int i;
        cout<<"Name"<<'\t'<<"Salary"<<'\n';
        for(i=0;i<2;i++){
            cout<< name[i]<<'\t'<<salary[i]<<'\n';
        }
}

1 个答案:

答案 0 :(得分:1)

我建议不要使用gets()std::cin >> name[i];,而不要使用cin.getline(name[i], 30);。后者将获取空间。

由于多余的返回字符填充了缓冲区,因此在cin.ignore();之后需要cin >> salary[i];