strcat () против strncat () в C ++

Опубликовано: 31 Декабря, 2021

strcat ()

Функция strcat () добавит копию исходной строки в конец целевой строки. Функция strcat () принимает два аргумента:
1) dest
2) src (источник)
Он добавит копию исходной строки в строку назначения. Завершающий символ в конце dest заменяется первым символом src.
Возвращаемое значение: функция strcat () возвращает dest, указатель на целевую строку.

// CPP program to demonstrate
// strcat
#include <cstring>
#include <iostream>
using namespace std;
int main()
{
char dest[50] = "This is an" ;
char src[50] = " example" ;
strcat (dest, src);
cout << dest ;
return 0;
}

Выход

Это пример

strncat ()

Функция strncat () в C ++ добавляет заданное количество символов из одной строки в конец другой строки. Функция strncat () принимает эти три аргумента:
1) Dest
2) Src
3) Считать

Это добавит заданное количество символов из строки src в конец строки dest. Завершающий символ в конце строки dest будет заменен первым символом строки src.
Возвращаемое значение: функция strncat () возвращает dest, указатель на целевую строку.

// CPP program to demonstrate
// strncat
#include <cstring>
#include <iostream>
using namespace std;
int main()
{
char dest[25] = "This is an example" ;
char src[50] = " to show working of strncat() this is not added" ;
strncat (dest, src, 29);
cout << dest ;
return 0;
}

Выход

Это пример, демонстрирующий работу strncat ()

Чем strncat () отличается от strcat ()?

Многие программисты рекомендуют, чтобы strncat () был безопасен по сравнению с strcat (), потому что strcat () не проверяет размер скопированных данных и копирует, пока не дойдет до нулевого терминатора, это может вызвать буфер переполнение, в то время как strncat () проверяет размер скопированных данных и копирует только n байтов.

// C,C++ program demonstrate difference bewteen
// strncat() and strcat()
#include <stdio.h>
#include <string.h>
int main()
{
// Take any two strings
char src[50] = "forgeeks" ;
char dest1[50] = "geeks" ;
char dest2[50] = "geeks" ;
printf ( "Before strcat() function execution, " );
printf ( "destination string : %s " , dest1);
// Appends the entire string of src to dest1
strcat (dest1, src);
// Prints the string
printf ( "After strcat() function execution, " );
printf ( "destination string : %s " , dest1);
printf ( "Before strncat() function execution, " );
printf ( "destination string : %s " , dest2);
// Appends 3 characters from src to dest2
strncat (dest2, src, 3);
// Prints the string
printf ( "After strncat() function execution, " );
printf ( "destination string : %s " , dest2);
return 0;
}

Выход:

Перед выполнением функции strcat () строка назначения: гики
После выполнения функции strcat () строка назначения: geeksforgeeks
Перед выполнением функции strncat () строка назначения: geeks
После выполнения функции strncat () строка назначения: geeksfor

Эта статья предоставлена Pranav . Если вам нравится GeeksforGeeks, и вы хотели бы внести свой вклад, вы также можете написать статью с помощью provide.geeksforgeeks.org или отправить ее по электронной почте на deposit@geeksforgeeks.org. Посмотрите, как ваша статья появляется на главной странице GeeksforGeeks, и помогите другим гикам.

Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.

Хотите узнать о лучших видео и практических задачах, ознакомьтесь с базовым курсом C ++ для базового и продвинутого уровня C ++ и курсом C ++ STL для базового уровня плюс STL. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .
C++ C