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

}

阅读 5.1k
7 个回答

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

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

至今c++我用的多的是来写acm题,有点大材小用,你的问题我不会。

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

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

end of file

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

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

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

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

  • 输入EOF,返回NULL

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

cin.getline()

接受一个字符串,可以接受空格并输出,demo如下:

#include <iostream>
using namespace std;
main ()
{
char m[20];
cin.getline(m,5);
cout<<m<<endl;
}

getline()

接受一个字符串,可以接收空格并输出,需包含“#include<string>”

#include<iostream>
#include<string>
using namespace std;
main ()
{
string str;
getline(cin,str);
cout<<str<<endl;
}

gets()

接受一个字符串,可以接收空格并输出,需包含“#include<string>”接受一个字符串,可以接收空格并输出,需包含“#include<string>”

#include<iostream>
#include<string>
using namespace std;
main ()
{
char m[20];
gets(m);                       //不能写成m=gets();
cout<<m<<endl;
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题