я использую hiredis
, hiredis
имеет API:
void* redisCommand(redisContext *c, char *format, ...)
Если формат представляет собой строку c, содержащую ‘\ 0’, формат усекается. Как это исправить?
C и C ++ — это разные языки.
В С строка, по определению, представляет собой непрерывную последовательность ненулевых символов, за которыми следует терминатор с нулевым символом. Все остальное не является строкой.
Если вы используете функцию, которая принимает только строку C, ничто другое не является допустимым, и это будет решение по проекту, а не «ошибка», требующая «исправления». Если исходный код для hiredis доступен для вас, вы можете получить дополнительную информацию, изучив этот исходный код.
используйте двоичную безопасную команду:
redisCommand("set %b %b", key, keyLen, value, valueLen);