##### cppreference.com

##### Search

Create account

##### Namespaces

- Page
- Discussion

##### Variants

##### Views

- View
- Edit
- History

##### Actions

# strncpy

From cppreference.com
< c‎ | string‎ | byte

Defined in header `<string.h>` |  |
char *strncpy( char *dest, const char *src, size_t count ); |  | (until C99)
char *strncpy( char *restrict dest, const char *restrict src, size_t count ); |  | (since C99)

Copies at most `count` characters of the byte string pointed to by `src` (including the terminating null character) to character array pointed to by `dest`.

If `count` is reached before the entire string `src` was copied, the resulting character array is not null-terminated.

If, after copying the terminating null character from `src`, `count` is not reached, additional null characters are written to `dest` until the total of `count` characters have been written.

If the strings overlap, the behavior is undefined.

### [edit] Parameters

dest | - | pointer to the character array to copy to
src | - | pointer to the byte string to copy from
count | - | maximum number of characters to copy

### [edit] Return value

`dest`

### [edit] Example

Run this code

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

    int main(void)
    {
        char str[] = "Hello, world!";
        char copy[40] = { 0 };

        /* no buffer overflow */
        strncpy(copy, str, sizeof(copy)-1);
        printf("%s\n", copy);

        /* copy partial amount of data */
        strncpy(copy, str, 5);

        /* add manually nullbyte.
         * comment it to see difference */
        copy[5] = '\0';
        printf("%s\n", copy);

        return 0;
    }

Output:

    Hello, world!
    Hello

### [edit] See also

strcpy | copies one string to another (function) [edit]
memcpy | copies one buffer to another (function) [edit]
C++ documentation for strncpy

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=c/string/byte/strncpy&oldid=69938"