copiar caracteres específicos de una cadena a otra cadena

digamos que tengo 2 cuerdas

char str_cp[50],str[50]; str[]="how are you" 

y quiero poner la segunda palabra ex “son” en otra cadena llamada str_cp por lo que si uso

 printf("%s ,%s",str,str_cp); 

será como

 how are you are 

¿Cómo puedo hacer eso? (Intenté la función strncpy pero solo puedo copiar caracteres específicos desde el principio de la cadena). ¿Hay alguna forma de usar un puntero que apunte al 4º carácter de la cadena y lo use en la función strncpy para copiar los primeros 3 caracteres, pero ¿Punto de partida para ser el 4to personaje?

Probé la función Strncpy pero solo puedo copiar caracteres específicos desde el principio de la cadena

strcpy familia de funciones de strcpy se copiará desde el punto que usted le indique que copie. Por ejemplo, para copiar desde el quinto carácter, puede usar

 strncpy(dest, &src[5], 3); 

o

 strncpy(dest, src+5, 3); // Same as above, using pointer arithmetic 

Tenga en cuenta que strncpy no terminará en nulo la cadena por usted, a menos que llegue al final de la cadena de origen:

No se anexa implícitamente ningún carácter nulo al final del destino si el origen es más largo que num (por lo tanto, en este caso, el destino puede no ser una cadena C terminada en nulo).

Necesita anular el resultado usted mismo:

 strncpy(dest, &src[5], 3); dest[3] = '\0';