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

问题在下面标出了


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";

}


慕妹3242003
浏览 1447回答 6
6回答

有只小跳蛙

检查&nbsp;fullname[0] == '\0'好久没写 C++,记不真切了,你自己试试看

慕田峪4524236

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

牛魔王的故事

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

眼眸繁星

end of filescanf(...)==EOF;cin>>... !=true;

拉莫斯之舞

可以选择输入EOF,大约是CTRL Z&nbsp;或者&nbsp;CTRL D,这样scanf返回EOF,cin为false字符串的这种输入可以使用fgets,它可以接受空格,读入一整行,对于输入有三种情况:正常输入字符串,fgets读取包含回车在内的参数指定的字节只输入一个回车,fgets只读取一个回车输入EOF,返回NULL用scanf、cin处理字符串输入无法处理只有回车的空行
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java