strncpy() only appears to give parameters for the length from the start of the char and not a start and end location.
I've found a work around, it's not pretty but it works.
char myChar[10]="123456789";
Serial.println();
Serial.println(myChar);
char subChar[4];
String tempString=(String(myChar).substring(4, 6));
tempString.toCharArray(subChar,sizeof(tempString));
Serial.println(subChar);