C++ c++。I';我试图通过使用开关内部的数组来获取用户输入,但当我运行代码时,它';显示分割错误?

C++ c++。I';我试图通过使用开关内部的数组来获取用户输入,但当我运行代码时,它';显示分割错误?,c++,arrays,input,switch-statement,C++,Arrays,Input,Switch Statement,当我选择switch case 1并输入详细信息时,它正在显示给我!分段错误。我觉得这是因为数组输入。但是,如何避免这种情况,或者说是否有办法解决这个问题呢? 问题-根据上面的问题1和2,修改程序,使其显示 用户可以选择其中一个; 增加新学生 显示学生名单 增加新课程 展览课程 用户可以选择安全退出/终止程序。 问题4 根据上述问题1到3,修改程序,以便用户能够 修改所选学生的姓名 #include <iostream> #include <string> using

当我选择switch case 1并输入详细信息时,它正在显示给我!分段错误。我觉得这是因为数组输入。但是,如何避免这种情况,或者说是否有办法解决这个问题呢? 问题-根据上面的问题1和2,修改程序,使其显示 用户可以选择其中一个; 增加新学生 显示学生名单 增加新课程 展览课程 用户可以选择安全退出/终止程序。 问题4 根据上述问题1到3,修改程序,以便用户能够 修改所选学生的姓名

#include <iostream>

#include <string>

using namespace std;

struct  Student{

    string name , id , nickname;



    };
struct  Course{

    string ccode,  cname, clecturer;



    };



int main() {
     int i=0, c=0, ti=0, tc=0;
     Student uniten[i];
     Course cuniten[c];

    cout << "\n \n" << endl;


int choice;
bool gameOn = true;
while (gameOn != false){
cout << "*******************************\n";
cout << " 1 - Add new students.\n";
cout << " 2 - Display student list.\n";
cout << " 3 - Add new course.\n";
cout << " 4 - Display course offered.\n";
cout << " 5 - Exit.\n";
cout << " Enter your choice and press return: ";

cin >> choice;

switch (choice)
{
case 1:
cout << "Add new students.\n";
i = i+1;
    cout << "\n \n" << endl;

    cout << "Student " << i << endl;

    cout << "Enter Student ID: ";

    cin >> (uniten[i].id);

    cout << "Enter their Name: ";

    cin >> uniten[i].name;

    cout << "Enter their Nickname: ";

    cin >> uniten[i].nickname;
cout << "\n \n" << endl;

break;
case 2:
cout << "Display Student List\n";

break;
case 3:
cout << "Add new course.\n";
c = c+1;

    cout << "\n \n" << endl;

    cout << "Course " << c << endl;

    cout << "Enter Course Code: ";

    cin >> (cuniten[c].ccode);

    cout << "Enter Course Name: ";

    cin >> cuniten[c].cname;

    cout << "Enter Lecturer Name: ";

    cin >> cuniten[c].clecturer;



break;

case 4:
cout << "Display Course List\n";
 for (tc=0; tc<c; tc++) {

    cout << "Course : " << cuniten[i].cname << " Course Code : " << cuniten[i].ccode << ", Lecturer name : " << cuniten[i].clecturer <<endl;

    cout << "\n \n" << endl;

    }
break;
case 5:
cout << "End of Program.\n";
gameOn = false;
break;
default:
cout << "Not a Valid Choice. \n";
cout << "Choose again.\n";
cin >> choice;
break;
}

}


}
#包括
#包括
使用名称空间std;
结构学生{
字符串名称、id、昵称;
};
结构课程{
字符串编码,cname,Clecuturer;
};
int main(){
int i=0,c=0,ti=0,tc=0;
学生联谊会;
库尼滕课程[c];
库特
在上面的代码中,创建了大小分别为i=0和c=0的数组

case 1:
cout << "Add new students.\n";
i = i+1;
    cout << "\n \n" << endl;

    cout << "Student " << i << endl;

    cout << "Enter Student ID: ";

    cin >> (uniten[i].id);

    cout << "Enter their Name: ";

    cin >> uniten[i].name;

    cout << "Enter their Nickname: ";

    cin >> uniten[i].nickname;
cout << "\n \n" << endl;
案例1:

我能回答另一个问题吗?这样可能会对你的问题有所帮助一个主要的灾难可能有两个原因:第一个原因是C++不允许0个长度数组。第二个是它不允许在运行时用该语法分配的数组。你需要一个<代码> STD::vector < /COD>或指针(虽然这不是首选)。对于动态数组。更糟的是:<代码> int i=0/*或任何其他值*/(学生UnITEN)[i];使用C99标准中可选的但不是C++的。一些编译器也支持C++(作为专有扩展)。但是,它不应该在C++中使用。(A<代码> STD::向量< /代码>是足够的替换。)而且,长度为0的数组更糟糕…谢谢,我知道了!但是如何根据用户输入的数量声明大小。我无法获得该部分。您应该使用std::vector而不是数组
case 1:
cout << "Add new students.\n";
i = i+1;
    cout << "\n \n" << endl;

    cout << "Student " << i << endl;

    cout << "Enter Student ID: ";

    cin >> (uniten[i].id);

    cout << "Enter their Name: ";

    cin >> uniten[i].name;

    cout << "Enter their Nickname: ";

    cin >> uniten[i].nickname;
cout << "\n \n" << endl;