我正在为一个编程主题做一个项目。他们要求将项目保存在链表中。在这里你有我的结构:
typedef struct dados {
int ID;
string title;
char institution[150];
char investigator[150];
string keywords[5];
float money;
struct dados *next; //pointer to next nodule
}No;
这是项目的第二阶段,第一阶段是使用一个简单的结构数组,但是这个阶段他们想要相同但有一个链表。
我有一个用于在结构中插入数据的函数。该函数请求输入,我将数据保存在结构中。
插入功能:
No * insertBegin(No * head){
No * newNode;
newNode= (No *)malloc(sizeof(No));
cout << endl << "Qual e o titulo do projeto?" << endl << endl;
getline(cin, newNode->titulo)
//More data like this, on the end:
newNode->next= head;
}
要在第一阶段保存标题字符串,我使用了这个:
getline(cin, no.title);
我想在第二阶段也这样做,我做了:
getline(cin, no->title);
但它给出了这个错误:
Unhandled exception at 0x00E14E96 in Aplicacao.exe: 0xC0000005: Access violation writing location 0xCDCDCDCD.
我不知道该怎么做。你能帮帮我吗?
万分感谢。
答案 0 :(得分:1)
正如其他人所指出的那样,你不能使用malloc来创建&#34; No&#34; struct因为malloc不会调用字符串的构造函数。因此功能变为:
No * insertBegin(No * head){
No * newNode;
//newNode= (No *)malloc(sizeof(No));
newNode = new No();
cout << endl << "Qual e o titulo do projeto?" << endl << endl;
getline(cin, newNode->titulo)
//More data like this, on the end:
newNode->next= head;
}
请注意,您不应该对该对象释放()。相反,请使用delete关键字。