How about posting the ACTUAL code? Difficult to comment on the behaviour of code we can't see. Actually the output of
Code:
main...{
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
Code:
int file_len = strlen(file);
and have a think about what effect the third parameter will have on the line
Code:
strlcat(parent, file, file_len);
Incidentally, if you think that
Code:
char str[256];
sprintf(str,"hello");
printf("%d",strlen(str));
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.