#include<iostream>
using namespace std;
class student
{
private:
int admno;
char sname[20];
float eng,math,science;
float total;
float ctotal()
{
return eng+math+science;
}
public:
void Takedata()
{
cout<<"Enter admission number ";
cin>> admno;
cout<<"Enter student name " ;
gets(sname);// here its giving the error
cout<< "Enter marks in english, math, science ";
cin>>eng>>math>>science;
total=ctotal();
};
void Showdata()
{
cout<<"Admission number "<<admno<<"\nStudent name "<<sname<<"\nEnglish "<<eng<<"\nMath "<<math<<"\nScience "<<science<<"\nTotal "<<total;
}
};
int main ()
{
student obj ;
obj.Takedata();
obj.Showdata();
return 0;
}
использование std::cin.getline
вместо gets
а также std::string
вместо char []
,
Как отмечалось в комментариях, gets
не заявлено в iostream
, Более того, он устарел в C ++ 11 и удален в C ++ 14, что означает, что даже если вы включите cstdio
или же stdio.h
, он просто не компилируется в компиляторах, поддерживающих C ++ 14.
Но, тем не менее, никогда не используйте std::cin
за char []
, Причина такая же как gets
, Оба сделают вашу программу под угрозой переполнение буфера когда ваш ввод длиннее буфера, что приведет к непредсказуемому поведению вашей программы, например к аварийному завершению. И взломщики могут даже взломать весь ваш компьютер с ним.
Других решений пока нет …