0

我正在使用hiredis. hiredis有api:

  void* redisCommand(redisContext *c, char *format, ...)

如果格式是包含 '\0' 的 ac 字符串,则格式被截断。如何解决这个问题?

4

2 回答 2

0

使用二进制安全命令:

redisCommand("set %b %b", key, keyLen, value, valueLen);
于 2014-08-22T05:01:36.180 回答
0

C 和 C++ 是不同的语言。

在 C 中,根据定义,字符串是连续的非空字符序列,后跟并包括空字符终止符。其他任何东西都不是字符串。

如果您使用的函数仅接受 C 字符串,则其他任何内容均无效,这将是设计决策,而不是需要“修复”的“错误”。如果您可以使用hiredis的源代码,您可能可以通过检查该源代码获得更多见解。

于 2014-08-19T04:17:59.797 回答