C ++ чтение из файла в связанный список, давая EXC_BAD_ACCESS

Привет, ребята, я пытаюсь перенести старый код из C в C ++ для назначения …. Я должен реализовать связанный список вручную, чтобы я не мог использовать контейнеры STL, иначе я бы уже сделал это …

вот мой связанный список:

#include <iostream>
#include <string>
#include <fstream>
using namespace std;struct Video {
char video_name[1024];      //  video name
int ranking;                // Number of viewer hits
char url[1024];             //  URL
Video *next;  // pointer to Video structure
}  *head = NULL;        // EMPTY linked list

вот код для чтения:

void load()
{
struct Video *temp;
temp = (Video*)malloc(sizeof(Video)); //allocate space for node
temp = head;
ifstream myfile ("Ranking.dbm");
if (myfile.is_open())
{
string line;
while ( myfile.good() )
{

myfile.getline(temp->video_name,1024);
myfile >> temp->ranking;
getline(myfile, line); // need to skip 'ranking's
// unread new-line
myfile.getline(temp->url,1024);
temp = temp->next;

}
head = NULL;
myfile.close();
}

else cout << "Unable to open file";

return ;

}

это чтение из текстового файла Ranking.dbm который выглядит так:

bagheera
20
bagheera.com
sushi
60
sushi.com
wicket
99
wicket.com
teek
100
teek.com

в основном каждый набор из 3 строк должен загружаться в Video структура, которая будет новым узлом в связанном списке.

из-за непредвиденных обстоятельств я использую XCode для этого проекта. мой вопрос, почему я получаю эту ошибку. Я думал, что EXC_BAD_ACCESS был в первую очередь ошибкой Objective-C …?

-3

Решение

В вашей функции load () вы выделяете один узел, читаете данные, чтобы заполнить этот узел, а затем назначаете temp = temp->next, Тем не мение, temp->next не инициализируется, поэтому скорее всего указывает на случайный адрес.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]