我试图将部分收到的缓冲区保存在char *变量中,但它无法正常工作

我在用:

recv(sock,buff,BUFLEN,0);
char *head=NULL;
head= (char *) malloc (16);
strncpy (head,buff,16);

我如何将它的一部分(比如4个第一个字节)保存到char * head中?