Embedded Artistry libc
C Standard Library Support for Bare-metal Systems
strncat.c File Reference
#include <string.h>
Include dependency graph for strncat.c:

Go to the source code of this file.

Functions

char * strncat (char *__restrict dst, const char *__restrict src, size_t maxlen)
 Appends at most maxlen characters from the character array pointed to by src, to the end of the null-terminated byte string pointed to by dest. More...
 

Function Documentation

◆ strncat()

char* strncat ( char *__restrict  dst,
const char *__restrict  src,
size_t  maxlen 
)

Appends at most maxlen characters from the character array pointed to by src, to the end of the null-terminated byte string pointed to by dest.

Appends at most count characters from the character array pointed to by src, stopping if the null character is found, to the end of the null-terminated byte string pointed to by dest. The character src[0] replaces the null terminator at the end of dest. The terminating null character is always appended in the end (so the maximum number of bytes the function may write is maxlen+1).

The behavior is undefined if the destination array is not large enough for the contents of both src and dest and the terminating null character. The behavior is undefined if the strings overlap. The behavior is undefined if either dest or src is not a pointer to a null-terminated byte string.

Parameters
dstpointer to the null-terminated byte string to append to
srcpointer to the null-terminated byte string to copy from
maxlenmaximum number of characters to copy
Returns
a copy of dest

Definition at line 26 of file strncat.c.

27 {
28  const size_t dstlen = strlen(dst);
29  const size_t srclen = strnlen(src, maxlen);
30  // The strcat() and strncat() functions append a copy of the null-
31  // terminated string src to the end of the null-terminated string dst,
32  // then add a terminating '\0'. The string dst must have sufficient
33  // space to hold the result.
34  //
35  // The strncat() function appends not more than maxlen characters
36  // from src, and then adds a terminating '\0'.
37  const size_t cpylen = srclen < maxlen ? srclen : maxlen;
38  memcpy(dst + dstlen, src, cpylen);
39  dst[dstlen + cpylen] = '\0';
40  // The strcat() and strncat() functions return dst.
41  return dst;
42 }
size_t strnlen(const char *str, size_t maxlen)
Returns the length of the given null-terminated byte string.
Definition: strnlen.c:21
size_t strlen(const char *str)
Returns the length of the given null-terminated byte string.
Definition: strlen.c:77
void * memcpy(void *__restrict dest, const void *__restrict src, size_t n)
Copies n characters from the object pointed to by src to the object pointed to by dest.

References memcpy(), strlen(), and strnlen().