entry -> data
持有
"key_string \0 value_string \0"
(即两个连接和空终止的字符串)
我想将密钥和值传递给
kvstore_put(&(server ->store), key, value);
作为论据。
答案 0 :(得分:2)
你不需要复制任何东西 - 它可以用指针完成。因为它以null结尾,所以输入字符串可以作为键加倍。可以使用以下字符串指针设置该值:
char *pszValue = strchr (pszKeyString, 0)+1;
没有复制,非常简单的实现。
答案 1 :(得分:1)
方法的一个例子:
width
另一种方式:
#include <stdio.h>
#include <string.h>
void kvstore_put(char key_value[], char key[], char value[]){
strcpy(key, key_value);
strcpy(value, strchr(key_value, '\0') + 1);
}
int main(void){
char kv[] = "key\0value\0";
char key[sizeof kv];
char value[sizeof kv];
kvstore_put(kv, key, value);
puts(key);
puts(value);
return 0;
}