You can't add two pointers together. If you want to allocate enough space for the result string, you must use strlen and add 1 for the NUL terminator
char* s3 = malloc(strlen(s1) + strlen(s2) + 1);
Think about something like this:
int* a = /*...*/;
int* b = /*...*/;
a + b; // what is the significance of this?
Adding two pointers doesn't make sense, the result is meaningless. C-strings are arrays of characters but that doesn't give them special rules as far as the pointers go. You have to use the library facilities provided, or roll your own (as it seems you are doing).
I'm not sure you know what you're doing with the calls to the cat function. The use of library str functions would be as follows:
// after the malloc
strcpy(s3, s1); // copy s1 into s3
strcat(s3, s2); // append s2 onto the end of s3
Your need for a cast in the call to you cat function is a giveaway that you're doing this wrong. Don't use casts unless you are completely sure you need them and understand why and what they are doing.
The way you have it set up will effectively append s2 onto the end of s1 and then assign s1 to s3. This will leak the block you just allocated, possibly overrun a buffer, and modify the previous contents of s1.
(strlen(s1)+strlen(s2))instead of(s1+s2)?(s1 + s2)?s3 = malloc(ft_strlen(s1) + ft_strlen(s2)+1);ft_strcpy(s3, s1);s3=ft_strcat(s3, s2);