Ошибка команды клиента Redis

Я использую hiredis, hiredis имеет API:

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

Если формат строки a c содержит '\0', формат усекается. Как это исправить?

2 ответа

Решение

Используйте двоичную безопасную команду:

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

C и C++ - это разные языки.

В Си строка, по определению, представляет собой непрерывную последовательность ненулевых символов, за которыми следует терминатор с нулевыми символами. Все остальное не является строкой.

Если вы используете функцию, которая принимает только строку C, ничто другое не является действительным, и это будет решение по проекту, а не "ошибка", требующая "исправления". Если вам доступен исходный код hiredis, вы можете получить дополнительную информацию, изучив этот исходный код.

Другие вопросы по тегам