struct array mit NULL initialisieren
-
hi,
möchte ein array aus structs initialisieren versuche es so
typedef struct _node { char *key; int value; struct _node *next; } node; /* Create a new hash table. */ hash_table *create_hash_table() { int i = 0; /* speicher fuer den root und das nodes array * allokieren */ hash_table *ht = (hash_table*) malloc(sizeof(hash_table)); node *nodes = (node*) malloc(currentSize * sizeof(node)); if (ht == NULL || nodes == NULL) { printf("Fehler bei Allokierung!"); return NULL; } /* node array mit NULL initialisieren */ for (i = 0; i <= currentSize; i++) { (*(nodes + i)) = 0; } ht->slot = &nodes; return ht; }
nur bekomme den fehler error: incompatible types in assignment
wieso?
-
liam23 schrieb:
node *nodes = (node*) malloc(currentSize * sizeof(node));
nimm statt 'malloc' einfach 'calloc' und dann brauchste die schleife nicht mehr
-
oder memset
-
danke!
int get_value(hash_table *ht, char *key) { node *it; node *n = *(ht->slot); int hashV = hash(key); if (hashV <= currentSize) { if (((n+hashV)) != NULL) { for (it = n+hashV; it != NULL; it = it->next) { if (strcmp(key, it->key) == 0) return it->value; } } } return 0; }
könntet ihr mir hier sagen warum ich bei strcmp immer ein speicherzugriffsfehler bekomme? slot ist ein **node pointer
-
Eventuell ist einer der Strings nicht nullterminiert (dann würde strcmp über das Ende hinaus weitervergleichen). Oder du hast noch gar nichts in it->key eingetragen (NULL zu dereferenzieren ist eine ganz schlechte Idee).