首页 > 解决方案 > 简单的员工数据库程序

问题描述

我正在尝试构建一个初学者员工数据库程序。这是问题所在;当 main() 中的计数器“i”变为“1”时,跳过循环的第一行;换句话说,它不会等待用户输入“name”字符串的值。当我使用“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';
        }
}

标签: c++

解决方案


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

然后,由于填充缓冲区的额外返回字符,您将需要一个cin.ignore();after 。cin >> salary[i];


推荐阅读