【发布时间】:2017-01-10 17:39:59
【问题描述】:
从屏幕截图中可以看出,fgets() 函数只运行一次以接收字符串name,但它不接受designation 字符串并跳到“salary”输入。更让我感兴趣的是,同样的代码在 TurboC3 中运行得非常好......我只遇到基于 GCC 编译器的 IDE(例如 DevCPP)以及现在在 Linux 中的 GCC 本身中遇到的问题。
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <string.h>
using namespace std;
class emp
{
private:
char name[20], desig[20];
int id;
float salary;
public:
void getdata()
{
cout << "ENTER NAME:\n";
fgets(name, 20, stdin);
cout << "ENTER ID:\n";
cin >> id;
cout << "ENTER DESIGNATION:\n";
fgets(desig, 20, stdin);
cout << "ENTER SALARY:\n";
cin >> salary;
}
void showdata()
{
cout << "NAME:- " << name << "\n";
cout << "ID:- " << id << "\n";
cout << "DESIGNATION: " << desig << "\n";
cout << "SALARY: " << salary << "\n";
}
};
int main()
{
emp ins[3];
int i;
cout << "ENTER DETAILS:\n";
for (i = 0; i < 3; i++)
ins[i].getdata();
cout << "*****************************DETAILS***************************\n";
for (i = 0; i < 3; i++)
ins[i].showdata();
return 0;
}
【问题讨论】:
-
我已通过将标题转换为小写来编辑您的问题。一般而言,以英语为母语的人会认为全部大写字母会大声喊叫,这种感觉很差。希望这次修改能吸引更多有用的反馈。