0

を使用してhiredisいます。hiredisAPIがあります:

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

フォーマットが「\0」を含む ac string の場合、フォーマットは切り捨てられます。これを修正する方法は?

4

2 に答える 2

0

C と C++ は異なる言語です。

C では、stringは、定義上、null 以外の文字の連続したシーケンスであり、その後に null 文字ターミネータが続きます。それ以外は文字列ではありません。

C 文字列のみを受け入れる関数を使用している場合、他に有効なものはなく、それは設計上の決定であり、「修正」を必要とする「バグ」ではありません。Hiredisのソース コードを入手できる場合は、そのソース コードを調べることで、さらに洞察を得ることができる場合があります。

于 2014-08-19T04:17:59.797 に答える
0

バイナリ セーフ コマンドを使用します。

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