steveo6666
Grünschnabel
Hi!
Ich bin gerade dabei in c einen binären Baum zu erstellen. Ein Knoten soll die folgenden Daten enthalten:
Ich möchte nun dem *name eine dynamische Länge zuweisen, je nach Länge des eingegeben Namens:
Eingabe:
Name: aa
Ausgabe:
c: aa
strlen(c): 2
nameLen: 2
sizeof(neu_knot->dat.name): 4
Warum ist sizeof(neu_knot->dat.name) 4 groß? Eigentlich sollte es in diesem Fall die Größe 2 annehmen. Auch wenn ich 20 Zeichen eingeb, wird die Größe 4 angegeben.
Wo liegt mein Fehler?
Ich bin gerade dabei in c einen binären Baum zu erstellen. Ein Knoten soll die folgenden Daten enthalten:
Code:
typedef struct knot {
struct dat { /* Nutzdaten */
char *name;
char natio[3]; /* 2-letter Laendercode (DE, AT etc.)*/
char zeit[9]; } dat; /* HH:MM:SS */
struct knot *lin; /* linker Teilbaum */
struct knot *rec; /* rechter Teilbaum */
} knot;
Ich möchte nun dem *name eine dynamische Länge zuweisen, je nach Länge des eingegeben Namens:
Code:
knot *eingab()
{
knot *neu_knot;
char c[255];
int nameLen;
neu_knot = (knot*)calloc(1,sizeof(knot));
printf(" Name: ");
scanf("%s", &c);
nameLen = strlen(c);
neu_knot->dat.name = (char*)calloc(nameLen, sizeof(char));
printf("c: %s\n", c);
printf("strlen(c): %i\n", strlen(c));
printf("nameLen: %i\n", nameLen);
printf("sizeof(neu_knot->dat.name): %i\n", sizeof(neu_knot->dat.name));
......
Eingabe:
Name: aa
Ausgabe:
c: aa
strlen(c): 2
nameLen: 2
sizeof(neu_knot->dat.name): 4
Warum ist sizeof(neu_knot->dat.name) 4 groß? Eigentlich sollte es in diesem Fall die Größe 2 annehmen. Auch wenn ich 20 Zeichen eingeb, wird die Größe 4 angegeben.
Wo liegt mein Fehler?