내가 작성중인 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