The Committee felt that the functions in this section were all excellent
candidates for replacement by high-performance built-in operations.
Hence many simple functions have been retained, and several added,
just to leave the door open for
better implementations of these common operations.

A block copy routine should be ``right'':
it should work correctly even if the blocks being copied overlap.
Otherwise it is more difficult to correctly code such overlapping
copy operations,
and portability suffers because the optimal C-coded algorithm on one machine
may be horribly slow on another.

A block copy routine should be ``fast'':
it should be implementable as a few inline instructions which take
maximum advantage of any block copy provisions of the hardware.
Checking for overlapping copies produces too much code for convenient
inlining in many implementations.
The programmer knows in a great many cases that the two blocks cannot
possibly overlap,
so the space and time overhead are for naught.

These arguments are contradictory but each is compelling.
Therefore the Standard mandates two block copy functions:
memmove
is required to work correctly even if the source and destination overlap,
while memcpy can presume nonoverlapping operands and be
optimized accordingly.

strncpy was initially introduced into the C library to
deal with fixed-length name fields in structures such as directory
entries.
Such fields are not used in the same way as strings:
the trailing null is unnecessary for a maximum-length field,
and setting trailing bytes for shorter names to null assures
efficient field-wise comparisons. strncpy is not by origin a ``bounded strcpy,'' and the
Committee has preferred to recognize existing practice
rather than alter the function to better suit it to such use.

strcoll and strxfrm provide for
locale-specific string sorting. strcoll is intended for applications in which the number of
comparisons is small;
strxfrm is more appropriate when items are to be compared a
number of times --- the cost of transformation is then only paid once.