#include <iostream>
#include <stdio.h>
#include <string.h>
#include <vector>
using namespace std;
struct student
{
char name[50];
char lname[50];
int id;
float GPA;
};
void toAdd(vector<student*> *plist);
void toDelete(vector<student*>* plist);
void toPrint(vector<student*>* plist);
int main(){
vector<student*> list;
vector<student*>* plist = &list;
char input[80];
bool running = true;
while (running == true){
cout << "What would you like to do?" << endl;
cin.getline (input,80);
if(strcmp (input, "ADD") == 0){
toAdd(plist);
}
else if(strcmp (input, "DELETE") == 0){
}
else if(strcmp (input, "PRINT") == 0){
}
else{
cout << "That is not a valid response!" << endl;
}
}
}
void toAdd(vector<student*> *plist){
student* stu;
cout << "What a test!" << endl;
cout << "First Name: ";
cin.getline(stu->name,20);
cout << "Last Name: ";
cin.getline(stu->lname,20);
cout << "ID: ";
cin.getline(stu->id);
cout << "GPA: ";
cin.getline(stu->GPA);
plist->push_back(stu);
}
void toDelete(){
}
void toPrint(){
}
我不明白我做错了什么。我已经浏览了几个小时的代码,真的需要一些帮助。当我运行代码并尝试输入名称时,我收到错误"分段错误(核心转储("。我觉得这可能很简单,但没有任何在线解释对我有帮助。:(
取消引用未初始化的指针。在您致电之前
cin.getline(stu->name,20);
您需要先使用 new
分配其内存
student* stu = new student;
Seg 错误通常是在您尝试访问不允许的内存位置区域(读取或写入(时引起的。在下面的行中,在 toAdd(( 方法中:
cin.getline(stu->name,20);
stu->name 等效于:(*stu(.name 正在尝试取消引用未初始化的指针。
此外,建议使用智能指针(原始(常规(指针的包装器(,因为它允许您更有效地管理为该指针分配的内存。 您可以选择唯一或共享的智能指针。