구조체를 구조체 배열에 복사하려고합니다.동적으로 할당 된 구조체 배열에 구조 복사
제가
vlist
및 VLIST 정점의 수를 저장하는 정수라고 정점의 동적으로 할당 된 어레이의 필드를 갖는 그래프 구조를 갖는다.
Vertices는 내부 필드로 이름 배열을가집니다. 오류가 발생하는 함수는 그래프와 문자열을 취해 해당 문자열을 정점 이름으로 사용하여 해당 그래프에 정점을 추가합니다.
이graph -> vlist[graph->num_verts] = new_vert;
오류 : :이 있으리라 믿고있어
incompatible types when assigning to type 'vertex' from type 'struct vertex *'
내가 '것을 의미
int add_vertex(Graph *graph, const char name[]){
if(name && graph){
/*Allocating space for new vertex*/
vertex *new_vert = malloc(sizeof(vertex));
/*Allocating space for vertex name*/
new_vert->name = malloc(strlen(name)+1);
/*Copying new vertex name to newly allocated vertex*/
strcpy(new_vert -> name, name);
/*Adding a new space to vertex list*/
graph -> vlist = realloc(graph-> vlist, sizeof(graph -> vlist) + sizeof(vertex));
graph -> num_verts += 1;
graph -> vlist[graph->num_verts] = new_vert;
return 1;
}
else{
return 0;
}
내가 라인에 대한 오류를 얻고있다 : 여기
는 기능입니다 동적 배열에 값을 잘못 복사하는 이유를 알 수 없습니다.내 정점이 같은 헤더 파일에 정의되어
typedef struct vertex{
char *name;
} vertex
이 어떤 도움이 전혀 좋은 것입니다, 감사합니다!
편집 : 그래프
typedef struct Graph {
vertex *vlist;
int num_verts;
} Graph;
당신은'Graph'와'vlist'가 무엇인지에 대해 냉담하며'sizeof (graph -> vlist)'는 가리키는 배열의 크기가 아니라 포인터의 크기라고 생각합니다. 평범하게'realloc (그래프 -> vlist, sizeof (그래프 -> vlist) + sizeof (꼭지점)); –
'Graph'의 해독을 영어로 설명하는 대신, 왜 복사하여 붙여 넣지 않습니까? – Neo
'그래프 -> vlist [그래프 -> num_verts] = * new_vert;'? –