1.\" Copyright (c) 1990, 1991, 1993 2.\" The Regents of the University of California. All rights reserved. 3.\" 4.\" This code is derived from software contributed to Berkeley by 5.\" Chris Torek and the American National Standards Committee X3, 6.\" on Information Processing Systems. 7.\" 8.\" Redistribution and use in source and binary forms, with or without 9.\" modification, are permitted provided that the following conditions 10.\" are met: 11.\" 1. Redistributions of source code must retain the above copyright 12.\" notice, this list of conditions and the following disclaimer. 13.\" 2. Redistributions in binary form must reproduce the above copyright 14.\" notice, this list of conditions and the following disclaimer in the 15.\" documentation and/or other materials provided with the distribution. 16.\" 3. All advertising materials mentioning features or use of this software 17.\" must display the following acknowledgement: 18.\" This product includes software developed by the University of 19.\" California, Berkeley and its contributors. 20.\" 4. Neither the name of the University nor the names of its contributors 21.\" may be used to endorse or promote products derived from this software 22.\" without specific prior written permission. 23.\" 24.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 25.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 26.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 27.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 28.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 29.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 30.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 31.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 32.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 33.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 34.\" SUCH DAMAGE. 35.\" 36.\" from: @(#)strcat.3 8.1 (Berkeley) 6/4/93 37.\" $NetBSD: strcat.3,v 1.11 2002/08/11 07:31:56 yamt Exp $ 38.\" 39.Dd August 11, 2002 40.Dt STRCAT 3 41.Os 42.Sh NAME 43.Nm strcat , 44.Nm strncat 45.Nd concatenate strings 46.Sh LIBRARY 47.Lb libc 48.Sh SYNOPSIS 49.Fd #include \*[Lt]string.h\*[Gt] 50.Ft char * 51.Fn strcat "char * restrict s" "const char * restrict append" 52.Ft char * 53.Fn strncat "char * restrict s" "const char * restrict append" "size_t count" 54.Sh DESCRIPTION 55The 56.Fn strcat 57and 58.Fn strncat 59functions 60append a copy of the null-terminated string 61.Fa append 62to the end of the null-terminated string 63.Fa s , 64then add a terminating 65.Ql \e0 . 66The string 67.Fa s 68must have sufficient space to hold the result. 69.Pp 70The 71.Fn strncat 72function 73appends not more than 74.Fa count 75characters. 76characters where space for the terminating 77.Ql \e0 78should not be included in 79.Fa count . 80.Sh RETURN VALUES 81The 82.Fn strcat 83and 84.Fn strncat 85functions 86return the pointer 87.Fa s . 88.Sh EXAMPLES 89The following appends 90.Dq Li abc 91to 92.Dq Li chararray : 93.Bd -literal -offset indent 94char *letters = "abcdefghi"; 95 96(void)strncat(chararray, letters, 3); 97.Ed 98.Pp 99The following example shows how to use 100.Fn strncat 101safely in conjunction with 102.Xr strncpy 3 . 103.Bd -literal -offset indent 104char buf[BUFSIZ]; 105char *input, *suffix; 106 107(void)strncpy(buf, input, sizeof(buf) - 1); 108buf[sizeof(buf) - 1] = '\e0'; 109(void)strncat(buf, suffix, sizeof(buf) - 1 - strlen(buf)); 110.Ed 111.Pp 112The above will copy as many characters from 113.Dq Li input 114to 115.Dq Li buf 116as will fit. 117It then appends as many characters from suffix as will fit (or none 118if there is no space). 119For operations like this, the 120.Xr strlcpy 3 121and 122.Xr strlcat 3 123functions are a better choice, as shown below. 124.Bd -literal -offset indent 125(void)strlcpy(buf, input, sizeof(buf)); 126(void)strlcat(buf, suffix, sizeof(buf)); 127.Ed 128.Sh SEE ALSO 129.Xr bcopy 3 , 130.Xr memccpy 3 , 131.Xr memcpy 3 , 132.Xr memmove 3 , 133.Xr strcpy 3 , 134.Xr strlcat 3 , 135.Xr strlcpy 3 136.Sh STANDARDS 137The 138.Fn strcat 139and 140.Fn strncat 141functions 142conform to 143.St -isoC99 . 144