strncpy, _fstrncpy

copy a string, to a maximum length

Synopsis:

#include <string.h>
char *strncpy( char *dst,
               const char *src,
               size_t n );
char __far *_fstrncpy( char __far *dst,
                       const char __far *src,
                       size_t n );

Description:

The strncpy() and _fstrncpy() functions copy no more than n characters from the string pointed to by src into the array pointed to by dst.

Copying of overlapping objects is not guaranteed to work properly. See the memmove() function if you wish to copy objects that overlap.

If the string pointed to by src is shorter than n characters, null characters are appended to the copy in the array pointed to by dst, until n characters in all have been written. If the string pointed to by src is longer than n characters, then the result isn't terminated by a null character.

The _fstrncpy() function is a data-model-independent form of the strncpy() function. It accepts far pointer arguments, and returns a far pointer. It is most useful in mixed memory model applications.

Returns:

the value of dst

See also:

strcpy(), strdup()

Examples:

#include <stdio.h>
#include <string.h>

void main()
  {
    char buffer[15];

    printf( "%s\n", strncpy( buffer, "abcdefg", 10 ) );
    printf( "%s\n", strncpy( buffer, "1234567",  6 ) );
    printf( "%s\n", strncpy( buffer, "abcdefg",  3 ) );
    printf( "%s\n", strncpy( buffer, "*******",  0 ) );
  }

produces the output:

abcdefg
123456g
abc456g
abc456g

Classification:

strncpy() is ANSI; _fstrncpy() is WATCOM.

Systems:

strncpy()
All (except DOS/PM)
_fstrncpy()
All (except Netware, DOS/PM)