SYNOPSIS
#include <string.h>
size_t strlcat(char *dest, const char *src, size_t size);
size_t strlcpy(char *dest, const char *src, size_t size);
DESCRIPTION
The
The
The
The source and destination strings should not overlap, as the behavior is undefined.
PARAMETERS
- dst
-
Is the null-terminated string to be modified or appended.
- src
-
Is the null-terminated string to be copied.
- size
-
Nothing will be written beyond dst+size-1.
RETURN VALUES
The
Note however, that if
EXAMPLES
The following code fragment illustrates the simple case:
char *s, *p, buf[BUFSIZ]; ... (void)strlcpy(buf, s, sizeof(buf)); (void)strlcat(buf, p, sizeof(buf));
To detect truncation, perhaps while building a pathname, something like the following might be used:
char *dir, *file, pname[MAXPATHLEN]; ... if (strlcpy(pname, dir, sizeof(pname)) >= sizeof(pname)) goto toolong; if (strlcat(pname, file, sizeof(pname)) >= sizeof(pname)) goto toolong;
Since it is known how many characters were copied the first time, things can be sped up a bit by using a copy instead of an append
char *dir, *file, pname[MAXPATHLEN]; size_t n; ... n = strlcpy(pname, dir, sizeof(pname)); if (n >= sizeof(pname)) goto toolong; if (strlcpy(pname + n, file, sizeof(pname) - n) >= sizeof(pname) - n) goto toolong;
However, one may question the validity of such optimizations, as they defeat the whole purpose of
MULTITHREAD SAFETY LEVEL
MT-Safe.
PORTING ISSUES
None.
AVAILABILITY
PTC MKS Toolkit for Professional Developers
PTC MKS Toolkit for Professional Developers 64-Bit Edition
PTC MKS Toolkit for Enterprise Developers
PTC MKS Toolkit for Enterprise Developers 64-Bit Edition
SEE ALSO
- Functions:
snprintf() ,strcat() ,strcpy() ,strncat() ,strncpy()
PTC MKS Toolkit 10.4 Documentation Build 39.