構造体の配列に構造体をコピーしようとしています。構造体を動的に割り当てられた配列の配列にコピー
Iは
vlist
とVLISTの頂点の数を格納する整数と呼ばれる頂点の動的に割り当てられた配列のフィールドを持つグラフ構造を有しています。
頂点は内部フィールドとして名前配列を持ちます。 エラーが発生する関数は、グラフと文字列を受け取り、その文字列を頂点の名前としてそのグラフに頂点を追加します。ここで
は関数である。
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;
}
私はラインのエラーを取得しています:
graph -> vlist[graph->num_verts] = new_vert;
エラー:
incompatible types when assigning to type 'vertex' from type 'struct vertex *'
私はこれは私が「という意味と仮定しています動的配列に値を誤ってコピーしていますが、なぜその理由が分かりません。
私の頂点は次のようにヘッダファイルに定義されています。ありがとうございました、すべてのすべてのヘルプは素晴らしいことだ
typedef struct vertex{
char *name;
} vertex
!
EDIT:グラフ
typedef struct Graph {
vertex *vlist;
int num_verts;
} Graph;
あなたは 'Graph'と' vlist'が何であるかについて心配しています。 'sizeof(graph - > vlist)'は、指し示す配列のサイズではなく、ポインタのサイズです。単純に 'realloc(graph-> vlist、sizeof(グラフ - > vlist)+ sizeof(頂点));は間違っています。 –
'Graph'の解読を英語で説明するのではなく、なぜそれをコピーして貼り付けませんか? – Neo
'graph - > vlist [graph-> num_verts] = * new_vert;'? –