1.\" Copyright (c) 1990, 1991 The Regents of the University of California. 2.\" 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.\" $OpenBSD: strcat.3,v 1.8 2000/04/21 15:24:19 aaron Exp $ 37.\" 38.Dd July 8, 1997 39.Dt STRCAT 3 40.Os 41.Sh NAME 42.Nm strcat , 43.Nm strncat 44.Nd concatenate strings 45.Sh SYNOPSIS 46.Fd #include <string.h> 47.Ft char * 48.Fn strcat "char *s" "const char *append" 49.Ft char * 50.Fn strncat "char *s" "const char *append" "size_t count" 51.Sh DESCRIPTION 52The 53.Fn strcat 54and 55.Fn strncat 56functions append a copy of the null-terminated string 57.Fa append 58to the end of the null-terminated string 59.Fa s , 60then add a terminating 61.Ql \e0 . 62The string 63.Fa s 64must have sufficient space to hold the result. 65.Pp 66The 67.Fn strncat 68function appends not more than 69.Fa count 70characters where space for the terminating 71.Ql \e0 72should not be included in 73.Fa count . 74.Sh RETURN VALUES 75The 76.Fn strcat 77and 78.Fn strncat 79functions return the pointer 80.Fa s . 81.Sh EXAMPLES 82The following appends 83.Dq Li abc 84to 85.Dq Li chararray : 86.Bd -literal -offset indent 87char *letters = "abcdefghi"; 88 89(void)strncat(chararray, letters, 3); 90.Ed 91.Pp 92The following example shows how to use 93.Fn strncat 94safely in conjunction with 95.Xr strncpy 3 . 96.Bd -literal -offset indent 97char buf[BUFSIZ]; 98char *input, *suffix; 99 100(void)strncpy(buf, input, sizeof(buf) - 1); 101buf[sizeof(buf) - 1] = '\e0'; 102(void)strncat(buf, suffix, sizeof(buf) - 1 - strlen(buf)); 103.Ed 104.Pp 105The above will copy as many characters from 106.Dq Li input 107to 108.Dq Li buf 109as will fit. 110It then appends as many characters from suffix as will fit (or none 111if there is no space). 112For operations like this, the 113.Xr strlcpy 3 114and 115.Xr strlcat 3 116functions are a better choice, as shown below. 117.Bd -literal -offset indent 118(void)strlcpy(buf, input, sizeof(buf)); 119(void)strlcat(buf, suffix, sizeof(buf)); 120.Ed 121.Sh SEE ALSO 122.Xr bcopy 3 , 123.Xr memccpy 3 , 124.Xr memcpy 3 , 125.Xr memmove 3 , 126.Xr strcpy 3 , 127.Xr strlcat 3 , 128.Xr strlcpy 3 129.Sh STANDARDS 130The 131.Fn strcat 132and 133.Fn strncat 134functions conform to 135.St -ansiC . 136