どなたかわかるかたお願いします。

const char str[]="sumple-string.";
char buf[strlen(str)];
の定義があり、先頭から5バイトまでを切り出したいので
strncpyで切り出すことを考えています。

strncpy(buf,str,length);

しかしながら、\0が入っていないため、printfが正常に出来ません。
この場合、どのようにしてNULL文字を後部にセットすればよいでしょうか?
もしくは、先頭からxbyteを切り出すのにもっと効率の良い方法がありますか?
尚、lengthにはsize_t で5になっています。

よろしくお願いします。