Redis客户端命令错误

时间:2014-08-19 03:42:29

标签: c++ c unix redis hiredis

我正在使用hiredishiredis有api:

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

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

2 个答案:

答案 0 :(得分:0)

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

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

如果您使用的函数只接受C字符串,那么其他任何内容都无效,这将是一个设计决策,而不是一个"错误"要求"修复"。如果您可以使用 hiredis 的源代码,则可以通过检查源代码获得更多洞察。

答案 1 :(得分:0)

使用二进制安全命令:

redisCommand("set %b %b", key, keyLen, value, valueLen);