我试图将这个链表写入二进制文件,但是它给了我一个访问冲突。 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");
}
最佳答案
fwrite将指向您正在写入的数据的指针作为第一个参数。您没有将其传递给int的指针。您实际上是在传递int。
您可能需要对第一个参数执行类似&(apt-> vertice)的操作。