Какую часть вы хотите скопировать?
int start = ?; //wherever you want to start... (0,1,2,...,maxlength)
int len = ?; //however long you need it to be ((maxlength-start) > len > 0)
char *mymem = malloc(len);
memcpy(mymem, mem+start, len);
РЕДАКТИРОВАТЬ: опс ... неправильно это :) вы хотите сравнить:)
for(...){
char* search = "_SM_";
char* mymem = (char*)(mem + (i*16));
if (strncmp(search,mymem,4) == 0){
length = (int)mymem + 4; // 0(_),1(S),2(M),3(_),4
checksum = 0;
...
}
}