问题在下面标出了include<iostream>using namespace std;const int SLEN=30;struct student{char fullname[SLEN];char hobby[SLEN];int opplevel;};int getinfo(student pa[],int n){char ch;int i=0;cout<<"name:";cin>>pa[i].fullname; //怎么改这条语句,是fullname输入为空时,退出循环while(pa[i].fullname!=NULL&&i<n){ cout<<"hobby:"; cin>>pa[i].hobby; cout<<"level:"; cin>>pa[i].opplevel; i++; cout<<"name:"; cin>>pa[i].fullname;}cout<<"end";return i;}void display1(student st){}void display2(student *ps){}void display3(student pa[],int n){for(int i=0;i<n;i++){ cout<<"name:"<<pa[i].fullname<<" "; cout<<"hobby:"<<pa[i].hobby<<" "; cout<<"level:"<<pa[i].opplevel<<" ";}cout<<endl;}int main(){cout<<"Enter class size:";int class_size;cin>>class_size;while(cin.get()!='\n') continue;student *p=new student[class_size];int entered=getinfo(p,class_size);display3(p,entered);delete [] p;cout<<"done\n";}
6 回答

慕田峪4524236
TA贡献1875条经验 获得超5个赞

拉莫斯之舞
TA贡献1820条经验 获得超10个赞
可以选择输入EOF
,大约是CTRL Z
或者 CTRL D
,这样scanf
返回EOF
,cin
为false
字符串的这种输入可以使用fgets
,它可以接受空格
,读入一整行,对于输入有三种情况:
正常输入字符串,fgets读取包含回车在内的参数指定的字节
只输入一个回车,fgets只读取一个回车
输入EOF,返回NULL
用scanf
、cin
处理字符串输入无法处理只有回车的空行
添加回答
举报
0/150
提交
取消