LinkedList写入二进制文件

时间:2014-05-23 21:48:50

标签: c binary linked-list

我试图写这个链表的二进制文件,但它给了我一个违规行为。 InsertVertice和InsertAresta创建了该结构的新实例,并且工作正常,所以我不知道为什么这会给我一个错误。如果需要,我可以在这里添加InsertVertice和InsertAresta函数。

typedef struct Arestas
{
    int vertice;
    char Action[100];
    struct Arestas* next;
}*arestas;

typedef struct Vertices
{
    int vertice;
    struct Vertices* next;
    struct Arestas* adjacente;
}*vertice;

void WriteBin(vertice v)
{
    FILE * f;
    vertice apt = v;
    struct Arestas* aresta;
    int i;
    f = fopen("Grafo.bin","wb");
    while(apt!=NULL)
    {
        aresta = apt->adjacente;
        fwrite(apt->vertice,sizeof(int),1,f);
        while(aresta!=NULL)
        {
            fwrite(aresta->vertice,sizeof(int),1,f);
            fwrite(aresta->Acao,sizeof(char),100,f);
            aresta = aresta->next;
        }
        apt = apt->next;
    }
}

void main()
{
    vertice v= NULL;
    v = InsertVertice(v,1);
    v = InsertAresta(v,1,2,"ola");
    v = InsertAresta(v,1,3,"hey");
    v = InsertAresta(v,1,4,"oi");
    v = InsertAresta(v,1,5,"hello");
    WriteBin(v);
    system("pause");
}

1 个答案:

答案 0 :(得分:1)

fwrite将指向您正在编写的数据的指针作为第一个参数。你没有传递一个指向int的指针。你实际上是在传递int。

您可能需要为第一个参数执行类似&(apt-> vertice)的操作。