PROBLEM: Pointer in einer Struct und strcpy
-
Hallo ihr fleißigen Communicaner
ich habe hier mal eine kleine Verkettete Liste geschrieben und hänge jetzt an einem (wahrscheinlich trivialen) Problem fest.
Hier der code#include "stdafx.h" #include <stdlib.h> #include <string.h> struct Adresse { char name[30]; char tele[25]; }; struct node { int zahl; struct Adresse *adr; struct node *pnext; }; int neues_element(struct node *n, int wert, char *ort) // Neues Element rechts von *n einfügen { if(n == NULL) { printf("Erste Runde!\n"); n->zahl = wert; } else { printf("Andere Runde\n"); // Element erzeugen node *neu = (node*) malloc(sizeof(node)); strcpy( neu->adr->name ,ort); // neu->adr->name funktioniert nicht neu->zahl = wert; neu->pnext = n->pnext; n->pnext = neu; } return 0; } void main(void) { char name1[20] = "Hallo", name2[20]; char *pname1 = name1; char *pname2 = name2; strcpy(pname2,pname1); struct node liste; struct node *erster_liste = &liste; struct node *paktuell = &liste; for(int i = 0; i < 10; i++) { neues_element(paktuell,i, "Dieter"); } loesche_element(*erster_liste,5); }
Das Problem liegt bei:
printf("Andere Runde\n"); // Element erzeugen node *neu = (node*) malloc(sizeof(node)); strcpy( neu->adr->name ,ort); // neu->adr->name funktioniert nicht neu->zahl = wert; neu->pnext = n->pnext; n->pnext = neu;
Was mache ich falsch?
mit freundlichen Grüßen
Bandergott
-
Beschreibe deinen Fehler,
lerne vernünftig einzurücken,
lerne Codetags zu benutzen,
lerne standardkonform zu programmieren,
wer verk. Listen benutzt, ist selbst Schuld.
-
Du mußt auch für adr noch Speicher per malloc reservieren (da dies ja selber nur ein Zeiger ist) - oder aber du änderst die Struktur so ab, daß adr direkt eingebettet wird:
struct node { int zahl; struct Adresse adr; struct node *pnext; };
Zugriff dann per
neu->adr.name
(aber warum nennst du den Funktionsparameter 'ort', wenn dort der Name drinsteht?)
PS: Aus irgendeinem Grund funktioniert das Syntaxhighlighting bei deinem Beitrag nicht - aber wenn ich deinen Beitrag kopiere oder zitiere und dann die Vorschau benutze, werden die Code-Blöcke angezeigt (wobei es von deiner Seite noch besser wäre die C-Tags zu verwenden, d.h. [code="c"])
-
Ah ok danke, das hat mir weitergeholfen
ich werde mich wohl noch ein bisschen mit dem Thema auseinander setzen müssen. Trotzdem bin ich froh dass es soweit erstmal läuft!