请用C语言实现键值对
时间: 2024-09-17 16:04:14 浏览: 16
在C语言中,由于其基本数据结构和内存管理的特点,可以使用结构体(struct)来创建简单的键值对(key-value pair)存储。以下是一个基础的示例,使用一个结构体`kv_pair`和一个动态数组来存储键值对:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义键值对结构体
typedef struct {
char* key; // 键
char* value; // 值
} kv_pair;
// 动态分配和释放内存
void create_pair(kv_pair** pairs, size_t* count, const char* key, const char* value) {
if (*count >= *pairs == NULL) { // 如果需要扩容
*pairs = (kv_pair*) realloc(*pairs, (*count + 1) * sizeof(kv_pair));
}
(*pairs)[*count].key = strdup(key); // 分配空间并复制键
(*pairs)[*count].value = strdup(value); // 同样复制值
(*count)++;
}
void destroy_pairs(kv_pair* pairs, size_t count) {
for (size_t i = 0; i < count; i++) {
free(pairs[i].key);
free(pairs[i].value);
}
free(pairs);
}
int main() {
kv_pair* pairs = NULL;
size_t count = 0;
// 插入键值对
create_pair(&pairs, &count, "Key1", "Value1");
create_pair(&pairs, &count, "Key2", "Value2");
// 使用键获取值
for (size_t i = 0; i < count; i++) {
printf("Key: %s, Value: %s\n", pairs[i].key, pairs[i].value);
}
// 清理内存
destroy_pairs(pairs, count);
return 0;
}
```
在这个例子中,我们通过动态分配结构体数组来存储键值对,并提供了插入和清理的功能。但是请注意,这个简单的实现并不是持久化存储或高效的键查找,只是一个演示如何在C语言中处理这类数据的基本概念。