したがって、リストをグローバル変数として定義しています。
typedef struct center {
char center_name[100];
char hostname[100];
int port;
struct center *next_center;
} center;
リストに要素を追加する必要があります。しかし、追加する必要があるこれらの要素はファイル上にあるため、次のようになります。
int main(int argc, char** argv) {
center *head = NULL;
parse(argv, head);
}
parse は、ファイルを読み取り、それらの読み取り要素を新しいセンターに追加する関数です (これはすべて機能し、二重チェックされます)。
void parser (char** argv, center *head) {
//read the elements i need to add
//creates a newCenter and adds the elements read to the new center
//this far it works
addToCenter(newCenter, head);
}
どこ:
addToCenter(center *newCenter, center *head){
//adds newCenter to the list
if (head == null)
head = newCenter;
else {
//find last element
lastelement.next_center = newCenter;
}
}
Main のリストが常に null として返されることを除いて、すべてが機能します。つまり、参照は変更されていません。リストへのポインターを渡しているため、理由がわかりません。
別の解決策は、リストのヘッド変数をグローバル変数として作成することですが、そのような状況を回避することをお勧めします。
前もって感謝します。