我正在尝试将一个 char 数组设置到其中一个结构中,但是当我尝试将其打印出来时。我遇到段错误。我做错了什么?
typedef struct buckets_{
char *key;
data *next;
}buckets;
typedef struct hash_table_ {
int (*hash_func)(char *);
int (*comp_func)(void*, void*);
buckets **buckets_array;
} hash_table, *Phash_table;
table_p -> buckets_array[0] = malloc(sizeof(buckets));
table_p -> buckets_array[1] = malloc(sizeof(buckets));
char word2[5] = "Hieo";
table_p -> buckets_array[1] -> key = malloc(sizeof(word2));
table_p -> buckets_array[1] -> key = word2;
printf("%s",table_p -> buckets_array[i] -> key); /*Getting segmitation falut here*/
Opp 忘了说我有一个分配数组的函数。假设我分配了数组。
最佳答案
这是我能看到的:
您没有分配buckets_array
。- 您为
key
分配了内存,但随后通过分配key = word2
立即泄漏。我猜你打算使用strcpy
或memcpy
。 - 您使用了一个名为
i
的可能未初始化的变量。我想这就是问题所在。
关于c - 为什么打印这个字符串时我做错了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10406237/