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