#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define WORD_SIZE 1024
typedef struct data_{
char *key;
void *data;
struct data_ *next;
}data_el;
typedef struct hash_table_ {
/* structure definition goes here */
data_el **buckets_array;
} hash_table, *Phash_table;
typedef struct word_{
char key[WORD_SIZE];
int frequency;
} word;
int main()
{
int size=0;
word *new_word;
new_word
= (word
*)malloc(sizeof(word
));
new_word->frequency = 5;
strcpy(new_word
->key
, "Lalalal"); // ^ ^ ^ ^ - ooops! you need to copy lalalal bytes into key[] array
Phash_table table_p;
table_p
= (Phash_table
)malloc(sizeof(hash_table
));table_p
->buckets_array
= (data_el
**)malloc(sizeof(data_el
*)*(size
+1));
table_p
->buckets_array
[0] = (data_el
*)malloc(sizeof(data_el
));// ^ ^ ^ ^ - ooops! you might need some data_el lol
table_p->buckets_array[0]->data = (void*)new_word;
/*Is this right? How do I cast this? (word*) ?*/
word* pdata=table_p->buckets_array[0]->data;
// ^ ^ ^ ^ - the readable way
printf("Key :%s Frequency:%d ",((word
*)(table_p
->buckets_array
[0]->data
))->key
, //<--the insane cast way (promote void* data_el.data to a word*) pdata->frequency);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgoKI2RlZmluZSBXT1JEX1NJWkUgMTAyNAoKdHlwZWRlZiBzdHJ1Y3QgZGF0YV97CiAgY2hhciAqa2V5OwogIHZvaWQgKmRhdGE7CiAgc3RydWN0IGRhdGFfICpuZXh0Owp9ZGF0YV9lbDsKCnR5cGVkZWYgc3RydWN0IGhhc2hfdGFibGVfIHsKICAvKiBzdHJ1Y3R1cmUgZGVmaW5pdGlvbiBnb2VzIGhlcmUgKi8KICBkYXRhX2VsICoqYnVja2V0c19hcnJheTsKfSBoYXNoX3RhYmxlLCAqUGhhc2hfdGFibGU7Cgp0eXBlZGVmIHN0cnVjdCB3b3JkX3sKICBjaGFyIGtleVtXT1JEX1NJWkVdOwogIGludCBmcmVxdWVuY3k7Cn0gd29yZDsKCmludCBtYWluKCkKewoKaW50IHNpemU9MDsKd29yZCAqbmV3X3dvcmQ7Cm5ld193b3JkID0gKHdvcmQgKiltYWxsb2Moc2l6ZW9mKHdvcmQpKTsKCm5ld193b3JkLT5mcmVxdWVuY3kgPSA1OwpzdHJjcHkobmV3X3dvcmQtPmtleSwgIkxhbGFsYWwiKTsKLy8gICAgICBeIF4gXiBeICAgICAgICAgICAgICAgLSBvb29wcyEgeW91IG5lZWQgdG8gY29weSBsYWxhbGFsIGJ5dGVzIGludG8ga2V5W10gYXJyYXkgICAKClBoYXNoX3RhYmxlIHRhYmxlX3A7CnRhYmxlX3AgPSAoUGhhc2hfdGFibGUpbWFsbG9jKHNpemVvZihoYXNoX3RhYmxlKSk7CnRhYmxlX3AtPmJ1Y2tldHNfYXJyYXkgPSAoZGF0YV9lbCAqKiltYWxsb2Moc2l6ZW9mKGRhdGFfZWwgKikqKHNpemUrMSkpOwoKCnRhYmxlX3AtPmJ1Y2tldHNfYXJyYXlbMF0gPSAoZGF0YV9lbCAqKW1hbGxvYyhzaXplb2YoZGF0YV9lbCkpOwovLyAgICAgIF4gXiBeIF4gICAgICAgICAgICAgICAgLSBvb29wcyEgeW91IG1pZ2h0IG5lZWQgc29tZSBkYXRhX2VsIGxvbAoKdGFibGVfcC0+YnVja2V0c19hcnJheVswXS0+ZGF0YSA9ICh2b2lkKiluZXdfd29yZDsKCgovKklzIHRoaXMgcmlnaHQ/IEhvdyBkbyBJIGNhc3QgdGhpcz8gKHdvcmQqKSA/Ki8Kd29yZCogcGRhdGE9dGFibGVfcC0+YnVja2V0c19hcnJheVswXS0+ZGF0YTsKLy8gICAgICBeIF4gXiBeICAgICAgICAgICAgICAgIC0gdGhlIHJlYWRhYmxlIHdheQoKcHJpbnRmKCJLZXkgOiVzIEZyZXF1ZW5jeTolZCAiLCgod29yZCopKHRhYmxlX3AtPmJ1Y2tldHNfYXJyYXlbMF0tPmRhdGEpKS0+a2V5LCAvLzwtLXRoZSBpbnNhbmUgY2FzdCB3YXkgKHByb21vdGUgdm9pZCogZGF0YV9lbC5kYXRhIHRvIGEgd29yZCopCiAgICAgICAgICAgIHBkYXRhLT5mcmVxdWVuY3kpOwogICAgICAgICAgICAKICAgICAgICAgICAgcmV0dXJuIDA7Cn0=