'strncpy' vs. 'sprintf'

Eu posso ver muitossprintfé usado em meus aplicativos para copiar uma string.

Eu tenho uma matriz de caracteres:

char myarray[10];
const char *str = "mystring";

Agora, se eu quiser copiar a stringstr para dentromyarray, é melhor usar:

sprintf(myarray, "%s", str);

ou

strncpy(myarray, str, 8);

?