几个小疑问

#include<iostream>
//#include<cstring>   //为什么这里注释了程序还能正常运行?程序里有strcpy、strlen
using namespace std;
const int SLEN = 30;
struct student
{
 char fullname[SLEN];
 char hobby[SLEN];
 int ooplevel;
};
int getinfo(student pa[], int n);
void display1(student st);
void display2(const student *ps);
void display3(const student pa[], int n);
int main()
{
 cout << "Enter class size: ";
 int class_size;
 cin >> class_size;
 while (cin.get() != '\n')
  continue;
 student *ptr_stu = new student[class_size];
 int entered = getinfo(ptr_stu, class_size);
 for (int i = 0; i < entered; i++)
 {
  display1(ptr_stu[i]);
  display2(&ptr_stu[i]);
 }
 display3(ptr_stu, entered);
 delete[] ptr_stu;
 cout << "Done\n";
 return 0;
}
int getinfo(student pa[], int n)
{
 int num_array_elem = n;
 char temp[SLEN];
 for (int i = 0; i < n; i++)
 {
  cout << "Enter name: ";
  cin.getline(temp, SLEN);
  bool blank_line = true;                    
  for (unsigned j = 0; j < strlen(temp); j++)//strlen
  {                                          
   if (!isspace(temp[j]))                    
   {                                         
    blank_line = false;                      
    break;                                   
   }
  }
  if (blank_line)
  {
   num_array_elem = i;
   break;
  }
  strcpy_s(pa[i].fullname, temp);               //strcpy
  cout << "Enter hobby: ";
  cin.getline(pa[i].hobby, SLEN);
  cout << "Enter ooplevel: ";
  cin >> pa[i].ooplevel;
  cin.get();                                //这一句什么作用?
 }
 cout << endl;
 return num_array_elem;
}
void display1(student st)
{
 cout << st.fullname << '\t' << st.hobby << '\t' << st.ooplevel << endl;
}
void display2(const student *ps)
{
 cout << ps->fullname << '\t' << ps->hobby << '\t' << ps->ooplevel << endl;
}
void display3(const student pa[], int n)
{
 for (int i = 0; i < n; i++)
 {
  cout << pa[i].fullname << '\t'
   << pa[i].hobby << '\t'
   << pa[i].ooplevel << endl;
 }
}


xungeer29
浏览 1349回答 1
1回答

木柘

在我的IDE里无法通过编译,你运行前重新编译覆盖之前的。
打开App,查看更多内容
随时随地看视频慕课网APP