C 把绳子一分为二

C 把绳子一分为二,c,string,C,String,持有 entry -> data (即,两个串联且以null结尾的字符串) 我想将密钥和值传递到 "key_string \0 value_string \0" 作为参数。方法的一个示例: kvstore_put(&(server ->store), key, value); 你不需要复制任何东西——这一切都可以通过指针来完成。因为它以null结尾,所以输入字符串可以兼作键。该值可以在字符串指针中通过以下方式设置: void kvstore_put(char key

持有

 entry -> data 
(即,两个串联且以null结尾的字符串)

我想将密钥和值传递到

"key_string \0 value_string \0"

作为参数。

方法的一个示例:

kvstore_put(&(server ->store), key, value);

你不需要复制任何东西——这一切都可以通过指针来完成。因为它以null结尾,所以输入字符串可以兼作键。该值可以在字符串指针中通过以下方式设置:

void kvstore_put(char key_value[], char key[], char value[]){
    while(*key++ = *key_value++);
    while(*value++ = *key_value++);
}

无需复制,实现非常简单。

为什么不运行一个循环来查找第一个终止字符的位置?然后从起始位置复制到该位置,再从该位置+1复制到结束位置。是否尝试使用strtok()。请注意,它将修改传递给它的字符串。因为delim为0,
strlen
将起作用。我同意@BillHarper,但你必须注意知道何时停止。如果always是两个字符串对一,那么您总是希望在第一个字符串之后有一个字符串。但是如果您不知道要拆分多少个字符串,那么您必须放置一些标志或其他东西来知道何时停止,并且不要超出字符串的限制。char*str2=strhr(str1,0)+1;
void kvstore_put(char key_value[], char key[], char value[]){
    while(*key++ = *key_value++);
    while(*value++ = *key_value++);
}
char *pszValue = strchr (pszKeyString, 0)+1;