c - 为什么打印这个字符串时我做错了?

标签 c arrays string data-structures

我正在尝试将一个 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 忘了说我有一个分配数组的函数。假设我分配了数组。

最佳答案

这是我能看到的:

  1. 您没有分配buckets_array
  2. 您为 key 分配了内存,但随后通过分配 key = word2 立即泄漏。我猜你打算使用 strcpymemcpy
  3. 您使用了一个名为i 的可能未初始化的变量。我想这就是问题所在。

关于c - 为什么打印这个字符串时我做错了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10406237/

相关文章:

c - 在数组中存储临时值与多个变量

c++ - "const"在 C 和 C++ 中有何不同?

java - 如何在单击按钮时增加变量?

c++ - 如何在 D 和 C++ 之间传递字符串?

java - 一个方法调用另一个字符串方法

javascript - 如何使用 jQuery 删除跨度数值的 25%?

c - 如何仅使用 ansi-c 在 Windows 计算机上连接 GPIB 设备

c - 哈希函数的 openssl 实现是面向位的还是面向字节的?

arrays - 数组上的Elasticsearch术语过滤器

javascript - Array(5) 是否等同于 var a = []; a.长度=5;在 JS 中?