Namespaces
Variants
Views
Actions

Difference between revisions of "cpp/string/byte/strncat"

From cppreference.com
< cpp‎ | string‎ | byte
m (r2.7.3) (Robot: Adding de, es, it, pt, ru)
m (Synopsis: unifying fmt: usually, "west-coast" pointers are used.)
 
(6 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{cpp/title| strncat}}
+
{{cpp/title|strncat}}
 
{{cpp/string/byte/navbar}}
 
{{cpp/string/byte/navbar}}
{{ddcl | header=cstring |
+
{{ddcl|header=cstring|
char *strncat( char *dest, const char *src, size_t count );
+
char* strncat( char* dest, const char* src, std::size_t count );
 
}}
 
}}
  
Appends a byte string pointed to by {{tt|src}} to a byte string pointed to by {{tt|dest}}. At most {{tt|count}} characters are copied. The resulting byte string is null-terminated. If the strings overlap, the behavior is undefined.  
+
Appends a byte string pointed to by {{c|src}} to a byte string pointed to by {{c|dest}}. At most {{c|count}} characters are copied. The resulting byte string is null-terminated.  
 +
 
 +
The destination byte string must have enough space for the contents of both {{c|dest}} and {{c|src}} plus the terminating null character, except that the size of {{c|src}} is limited to {{c|count}}.
 +
 
 +
The behavior is undefined if the strings overlap.
  
 
===Parameters===
 
===Parameters===
{{param list begin}}
+
{{par begin}}
{{param list item | dest | pointer to the null-terminated byte string to append to}}
+
{{par|dest|pointer to the null-terminated byte string to append to}}
{{param list item | src | pointer to the null-terminated byte string to copy from}}
+
{{par|src|pointer to the null-terminated byte string to copy from}}
{{param list item | count | maximum number of characters to copy}}
+
{{par|count|maximum number of characters to copy}}
{{param list end}}
+
{{par end}}
  
 
===Return value===
 
===Return value===
{{tt|dest}}
+
{{c|dest}}
 +
 
 +
===Notes===
 +
Because {{tt|std::strncat}} needs to seek to the end of {{c|dest}} on each call, it is inefficient to concatenate many strings into one using {{tt|std::strncat}}.
  
 
===Example===
 
===Example===
 
{{example
 
{{example
|
+
|code=
| code=
+
#include <cstdio>
  | output=
+
#include <cstring>
 +
   
 +
int main()
 +
{
 +
    char str[50] = "Hello ";
 +
    const char str2[50] = "World!";
 +
    std::strcat(str, str2);
 +
    std::strncat(str, " Goodbye World!", 3); // may issue "truncated output" warning
 +
    std::puts(str);
 +
}
 +
|output=
 +
Hello World! Go
 
}}
 
}}
  
 
===See also===
 
===See also===
{{dcl list begin}}
+
{{dsc begin}}
{{dcl list template | cpp/string/byte/dcl list strcat}}
+
{{dsc inc|cpp/string/byte/dsc strcat}}
{{dcl list template | cpp/string/byte/dcl list strcpy}}
+
{{dsc inc|cpp/string/byte/dsc strcpy}}
{{dcl list see c | c/string/byte/strncat}}
+
{{dsc see c|c/string/byte/strncat}}
{{dcl list end}}
+
{{dsc end}}
  
[[de:cpp/string/byte/strncat]]
+
{{langlinks|de|es|fr|it|ja|pt|ru|zh}}
[[es:cpp/string/byte/strncat]]
+
[[fr:cpp/string/byte/strncat]]
+
[[it:cpp/string/byte/strncat]]
+
[[ja:cpp/string/byte/strncat]]
+
[[pt:cpp/string/byte/strncat]]
+
[[ru:cpp/string/byte/strncat]]
+
[[zh:cpp/string/byte/strncat]]
+

Latest revision as of 14:32, 6 June 2023

Defined in header <cstring>
char* strncat( char* dest, const char* src, std::size_t count );

Appends a byte string pointed to by src to a byte string pointed to by dest. At most count characters are copied. The resulting byte string is null-terminated.

The destination byte string must have enough space for the contents of both dest and src plus the terminating null character, except that the size of src is limited to count.

The behavior is undefined if the strings overlap.

Contents

[edit] Parameters

dest - pointer to the null-terminated byte string to append to
src - pointer to the null-terminated byte string to copy from
count - maximum number of characters to copy

[edit] Return value

dest

[edit] Notes

Because std::strncat needs to seek to the end of dest on each call, it is inefficient to concatenate many strings into one using std::strncat.

[edit] Example

#include <cstdio>
#include <cstring>
 
int main() 
{
    char str[50] = "Hello ";
    const char str2[50] = "World!";
    std::strcat(str, str2);
    std::strncat(str, " Goodbye World!", 3); // may issue "truncated output" warning
    std::puts(str);
}

Output:

Hello World! Go

[edit] See also

concatenates two strings
(function) [edit]
copies one string to another
(function) [edit]
C documentation for strncat