私はCプログラムでRedisを使用しています(hiredis Cバインディングを使用しています)。 xxxは(バイナリデータ)512バイト長であり、SET asdf xxx
:あなたが見ることができるようにRedis:データが改行文字で始まる場合のSETコマンド
void insert(redisContext* c,char* buf){
static redisReply *reply;
const char* hash="asdf";
char* cmd=(char*)malloc((strlen("SET ")+strlen(hash)+strlen(" ")+CHUNKSIZE)*sizeof(char));
//hash=getHash(buf);
memcpy(cmd,"SET ",(size_t)strlen("SET "));
memcpy(cmd+strlen("SET "),hash,(size_t)strlen(hash));
memcpy(cmd+strlen("SET ")+strlen(hash)," ",(size_t)strlen(" "));
memcpy(cmd+strlen("SET ")+strlen(hash)+strlen(" "),buf,(size_t)CHUNKSIZE);
fwrite(cmd,strlen("SET ")+strlen(hash)+strlen(" ")+CHUNKSIZE,sizeof(char),stdout);
printf("\n\n\n\n\n\n");
reply=(redisReply*)redisCommand(c,cmd);
freeReplyObject(reply);
free(cmd);
}
は、cmdが次のようになります。
は、ここに私のコードです。
問題は、バイナリデータ文字列が '\ n'で始まる場合に発生します。私はエラー(セグメンテーションエラー)を取得し続けます。
誰もが考えている?事前に
多くのおかげで、
どうもありがとうございました:一緒に文字列へのポインタで、それは文字列のsize_tの長さ引数が必要です。それは明らかに別のエラーです。とても有難い、 – Eamorr