If
n
is smaller than the string length (as in: distance to first null byte) then you’re bound to have garbage in your return destinationWha? N is just maximum length of string to copy. Data after dst+n is unchanged.
In retrospect null-terminated strings were a mistake, but so were many other things, at some point you just have to accept that there’s hysterical raisins everywhere.
All hail length-prefixed strings!
Data after dst+n is unchanged.
Sure but that means the part before that is garbage because you have a null terminated string without terminator.
Or at least that’s how I see it. If your intention isn’t to start and end with a null-terminated string you should be using memcpy. Let us not talk about situations where
CHAR_BIT != 8
that’s not POSIX anyway.Even better, just avoid doing string manipulation in C.
Let us not talk about situations where
CHAR_BIT != 8
that’s not POSIX anyway.Yeah, let’s not talk about 20-bit one’s complement ints.