Я использую Redis в программе на C, которую я пишу (с привязкой hiredis C).
Вот мой код:
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выглядит следующим образом: SET asdf xxx
, где xxx имеет длину 512 байт (двоичные данные).
Проблема возникает, когда строка двоичных данных начинается с '\ n'.Я получаю сообщение об ошибке (ошибка сегментации).
У кого-нибудь есть идеи?
Заранее большое спасибо,