How about posting the ACTUAL code? Difficult to comment on the behaviour of code we can't see. Actually the output of
char path[256]
char file1[256]
will be a stack of syntax errors because this code is invalid.

After RTFM-ing on strlcat again, have a close look at the line
int file_len = strlen(file);
and have a think about what effect the third parameter will have on the line
strlcat(parent, file, file_len);
Incidentally, if you think that
char str[256];
will display 256, try running the code and see what you ACTUALLY get. Hint: it won't be 256, unless your implementation of strlen is broken.

If your second code sample "works" then I would suggest your implementation of strlcat is broken. strlen("testtt.dat") should be 10, so path should contain "./test/te" (9 characters visible, plus 1 for the terminating NULL) after the strlcat.