Name | Description | Notes | Source | Availability | |||||||
---|---|---|---|---|---|---|---|---|---|---|---|
strcat() |
Catenate strings | (·) | <string.h> |
C89 | C90 | C95 | C99 | C11 | |||
strcat_s() |
Catenate strings | ? | (·) | <string.h> |
C11 | ||||||
strcpy() |
Copy string | (·) | <string.h> |
C89 | C90 | C95 | C99 | C11 | |||
strcpy_s() |
Copy string | ? | (·) | <string.h> |
C11 | ||||||
strncat() |
Catenate strings | (·) | <string.h> |
C89 | C90 | C95 | C99 | C11 | |||
strncat_s() |
Catenate strings | ? | (·) | <string.h> |
C11 | ||||||
strncpy() |
Copy string | (·) | <string.h> |
C89 | C90 | C95 | C99 | C11 | |||
strncpy_s() |
Copy string | ? | (·) | <string.h> |
C11 | ||||||
wcscat() |
Catenate wide-character strings | (·) | <wchar.h> |
C95 | C99 | C11 | |||||
wcscat_s() |
Catenate wide-character strings | ? | (·) | <wchar.h> |
C11 | ||||||
wcscpy() |
Copy wide-character string | (·) | <wchar.h> |
C95 | C99 | C11 | |||||
wcscpy_s() |
Copy wide-character string | ? | (·) | <wchar.h> |
C11 | ||||||
wcsncat() |
Catenate wide-character strings | (·) | <wchar.h> |
C95 | C99 | C11 | |||||
wcsncat_s() |
Catenate wide-character strings | ? | (·) | <wchar.h> |
C11 | ||||||
wcsncpy() |
Copy wide-character string | (·) | <wchar.h> |
C95 | C99 | C11 | |||||
wcsncpy_s() |
Copy wide-character string | ? | (·) | <wchar.h> |
C11 |
Functions with names matching ^(str|wcs)[a-z]
might be added to
<string.h>
, and ^wcs[a-z]
might be added to <wchar.h>
.
#include <stdio.h>
char *strcpy(char *dst, const char *src);
char *strncpy(char *dst, const char *src, size_t n);
#define __STDC_WANT_ 1 #includeLIB_ EXT1__ <stdio.h>
errno_t strcpy_s(char *dst, rsize_t dstmax, const char *src); errno_t strncpy_s(char *dst, rsize_t dstmax, const char *src, rsize_t n);
#include <wchar.h>
wchar_t *wcscpy(wchar_t *dst, const wchar_t *src);
wchar_t *wcsncpy(wchar_t *dst, const wchar_t *src, size_t n);
#define __STDC_WANT_ 1 #includeLIB_ EXT1__ <wchar.h>
errno_t wcscpy_s(wchar_t *dst, rsize_t dstmax, const wchar_t *src); errno_t wcsncpy_s(wchar_t *dst, rsize_t dstmax, const wchar_t *src, rsize_t n);
The strcpy
family of functions copy
a null-terminated string from src
to
an array dst
, including the null
terminator.
The functions with a parameter n
copy at most n
characters, so their
src
strings need not be
null-terminated, and the result in dst
might not be null-terminated. They also continue write
exactly n
characters by padding with
nulls.
The _s
variants fail if more than
dstmax
characters would have to be
copied, or if dstmax
or n
is greater than RSIZE_
, returning
non-zero. They also ensure that a null character terminates
the result in dst
, and place it at the
start when failing. The other functions return dst
.
#include <stdio.h>
char *strcat(char *dst, const char *src);
char *strncat(char *dst, const char *src, size_t n);
#define __STDC_WANT_ 1 #includeLIB_ EXT1__ <stdio.h>
errno_t strcat_s(char *dst, rsize_t dstmax, const char *src); errno_t strncat_s(char *dst, rsize_t dstmax, const char *src, rsize_t n);
#include <wchar.h>
wchar_t *wcscat(wchar_t *dst, const wchar_t *src);
wchar_t *wcsncat(wchar_t *dst, const wchar_t *src, size_t n);
#define __STDC_WANT_ 1 #includeLIB_ EXT1__ <wchar.h>
errno_t wcscat_s(wchar_t *dst, rsize_t dstmax, const wchar_t *src); errno_t wcsncat_s(wchar_t *dst, rsize_t dstmax, const wchar_t *src, rsize_t n);
The strcat
family of functions do
the same as their counterparts in the strcpy
family, except that dst
must be a null-terminated string on input.
These functions find the null terminator, and then perform a
copy starting at that point, overwriting the original null
terminator, thereby appending the string src
onto the end of string dst
. dstmax
is reduced to
account for the string already present in dst
.