我正在尝试构建新员工数据库程序。 这是问题所在;当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';
}
}
答案 0 :(得分:1)
我建议不要使用gets()
或std::cin >> name[i];
,而不要使用cin.getline(name[i], 30);
。后者将获取空间。
由于多余的返回字符填充了缓冲区,因此在cin.ignore();
之后需要cin >> salary[i];
。