-3

こんにちはみんな私は割り当てのために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エラーだと思いました...?

4

1 に答える 1

1

load()関数では、単一のノードを割り当て、データを読み取ってノードに入力してから、を割り当てtemp = temp->nextます。ただし、temp->next初期化されていないため、ランダムなアドレスを指している可能性があります。

于 2012-10-07T20:04:53.597 に答える