gpt4 book ai didi

c++ - 为什么我的指针会导致段错误?

转载 作者:太空狗 更新时间:2023-10-29 20:34:38 25 4
gpt4 key购买 nike

#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(){
}

我不明白我做错了什么。我已经研究这段代码好几个小时了,真的需要一些帮助。当我运行代码并尝试输入名称时,出现错误“Segmentation Fault(core dumped)”。我觉得这可能真的很简单,但是没有一个在线解释对我有帮助。 :(

最佳答案

您取消引用一个未初始化的指针。在你打电话之前

cin.getline(stu->name,20);

你需要先使用new分配它的内存

student* stu = new student;

关于c++ - 为什么我的指针会导致段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47245146/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com