我定义了一个结构。
typedef struct bucket {
char *key;
void *value;
struct bucket *next;
} Bucket;
此函数在名为“htable.h”的文件中定义。
int put(Table *table, const char *key, void *value) {
Bucket insertBucket;
strcpy(insertBucket.key, key);
return 0;
}
这不应该有效吗?
答案 0 :(得分:3)
问题是你没有为字符指针key
分配任何内存,而是试图将字符串复制到它。它给你不明确的行为
key
只是一个未初始化的字符指针,它只是指向一个随机地址。为了能够使用任何指针,有两个条件:
你违反了两者。
答案 1 :(得分:1)
您需要分配一些空间来存储字符串。现在你只有一个原始指针。像这样:
char dest[80]; // arbitrary amount of space for example
strcpy(dest, key);
理想情况下,您希望在struct
typedef struct bucket {
char key[80];
// .. other members ..
} Bucket;