为了账号安全,请及时绑定邮箱和手机立即绑定

c++怎么输入空数组而退出循环?

c++怎么输入空数组而退出循环?

慕妹3242003 2019-03-26 21:15:03
问题在下面标出了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 回答

?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

检查 fullname[0] == '\0'

好久没写 C++,记不真切了,你自己试试看


查看完整回答
反对 回复 2019-04-25
?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

pa[i].fullname==NULL表示cin输入结束,一般用ctrl+z可以做到。pa[i].fullname==""(引号之间没有空格)表示输入为空,直接enter就可以吧。


查看完整回答
反对 回复 2019-04-25
?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

这种时候我都选择用scanf输入....


查看完整回答
反对 回复 2019-04-25
?
眼眸繁星

TA贡献1873条经验 获得超9个赞

end of file

scanf(...)==EOF;
cin>>... !=true;


查看完整回答
反对 回复 2019-04-25
?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

可以选择输入EOF,大约是CTRL Z 或者 CTRL D,这样scanf返回EOFcinfalse
字符串的这种输入可以使用fgets,它可以接受空格,读入一整行,对于输入有三种情况:

  • 正常输入字符串,fgets读取包含回车在内的参数指定的字节

  • 只输入一个回车,fgets只读取一个回车

  • 输入EOF,返回NULL

scanfcin处理字符串输入无法处理只有回车的空行


查看完整回答
反对 回复 2019-04-25
  • 6 回答
  • 0 关注
  • 1446 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号