C Свързване на низове

C String Concatenation



Конкатенацията е процесът за добавяне на втори низ в края на първия низ. В тази статия ще обсъдим как да обединим низове в C, като използваме различни методи.

Стандартната библиотечна функция на C, която се използва за конкатенация на низ, е strcat ().







Прототип на функцията:

$char * strcat (str1,str2);

където str1 е първият низ и str2 е вторият низ. Връщаната стойност на функцията е показалецът към конкатенирания низ.



Сега с помощта на пример ще видим как се извършва конкатенацията.



Пример 1:

$ strcat (str1,str2);
където str1 е Бела
str2 е Whitmann

след конкатенация на низ,първият низ ще бъде

str1 Бела Уитман
str2 Whitmann

докато string2 ще остане същият.





Пример 2:

$ strcat (str2,str1);
където str1 е Бела
str2 е Whitmann

след конкатенация на низ,конкатениран низ ще бъде

str1 Бела
str2 Бела Уитман

докато string1 ще остане същият.

Декларация в заглавен файл C

Функциите за обработка на низове са декларирани под headerfile. Ако някой иска да използва стандартна функция за конкатенация, този заглавен файл трябва да бъде включен.



Следователно можем да постигнем конкатенация на низ по два начина. Единият е с използване на стандартната библиотечна функция C, а другият е без използване на библиотечната функция на C. Следват примерни програми, които демонстрират и двата начина. Конкатенацията на низове без използване на библиотечната функция C може да бъде реализирана по много начини.

Ще обсъдим това и в следващите раздели с пример.

Конкатенация на два низа чрез използване на библиотечната функция C

#включва

#включва

#дефинирайте BUF_SIZE 256
intглавен()
{
charS1[BUF_SIZE],S2[BUF_SIZE]; / * Два низови буфера */

printf ('Въведете първия низн'); ] /* Отпечатайте съобщение до конзолата, за да може потребителят да въведе 1 -ви низ*/
бегачки (S1,BUF_SIZE,stdin); / * съхранява въведения от потребителя низ в S1 буфер */
S1[ стрън (S1)-1] = ' 0';

printf ('Въведете втория низн');/* Отпечатайте съобщение до потребителя за въвеждане на 2 -ри низ*/
бегачки (S2,BUF_SIZE,stdin); / * съхранява въведения от потребителя низ в S2 буфер */
S2[ стрън (S2)-1] = ' 0';

strcat (S1,S2); / *Извикайте стандартната функция с низове S1 и S2 */

printf ('нСвързаният низ е %sнн',S1); / *Изход: S1 се добавя към S2 */

връщане 0;
}

Моментни снимки на програмата и изход:

Текстово описание се генерира автоматично

Текстово описание автоматично генерирано със средна увереност

Конкатенация на два низа без използване на библиотечна функция

Използване на цикъл for за копиране на втория низ в края на първия низ.

#включва

#включва

#дефинирайте BUF_SIZE 256
intглавен()
{
charS1[BUF_SIZE],S2[BUF_SIZE]; /* Обявете буферите S1, S2 и за двата низа*/
intдължина= 0,i,й; /*Променливи, необходими за обхождане на цикъл*/

printf („Въведете първия низ“); / * Отпечатайте потребителско съобщение, за да въведете първия низ */
бегачки (S1,BUF_SIZE,stdin); /* въведеният от потребителя низ ще се съхранява в S1*/
S1[ стрън (S1)-1] = ' 0';

printf („Въведете втория низ“); / * Отпечатайте потребителско съобщение за въвеждане на втори низ */
бегачки (S2,BUF_SIZE,stdin); /* въведеният от потребителя низ ще се съхранява в S2*/
S2[ стрън (S2)-1] = ' 0';
/* Преминете първия низ, за ​​да намерите дължината на S1*/
за(i=0;S1[i]! =' 0';i++)
{
дължина=дължина+1;
}

/*length ще има края на S1, започва от дължина и копира целия S2 в S1*/
за(i=дължина,й=0;S2[й]! =' 0';i++,й++)
{
S1[i]=S2[й];
S1[i]=' 0';
}

/ *Отпечатайте S1, конкатениран резултат */
printf ('нСвързаният низ е %sнн',S1);
връщане 0;
}

Моментни снимки на програмата и изход:

Текстово описание се генерира автоматично

Текстово описание се генерира автоматично

Друг начин за без библиотечна функция

Конкатенация с помощта на рекурсия:

Функцията stringconcatenate () ще се използва за получаване на дължината на string1. Ако S2 е празен, тогава нулев знак ще бъде присвоен на S2.

Ако нулев знак не е присвоен на S2, след това добавете елемент от S2 в края на S1, който е S1 [i+j] = S2 [j], това увеличава стойността на i в низа.

Функция ще се извика сама, като предаде реформираните низове (S1, S2) като аргумент. Ще се извиква отново и отново, докато S2 се изпразни.

Свързаният S1 ще бъде отпечатан от main () като

#включва

#включва

#дефинирайте BUF_SIZE 256

/ * рекурсивна функция за реализиране на конкатенация на низ съгласно горното описание */
невалиденstringconcatenate(char *S1,char *S2)
{
статичен inti=0;
статичен intй;
й= стрън (S1);
ако(!S2[i])
{
S2[i]=' 0';
}
иначе
{
S1[й] =S2[i];
S1[й+1] = ' 0';
i++;
stringconcatenate(S1,S2);
}
}
intглавен()
{
charS1[BUF_SIZE],S2[BUF_SIZE];

printf ('Въведете стойността на първия низ:'); / * потребителско съобщение за въвеждане на първи низ */
бегачки (S1,BUF_SIZE,stdin); / * потребителски вход първи низ, съхранява се в S1 */
S1[ стрън (S1)-1] = ' 0';

printf ('Въведете стойността на втория низ:'); / * потребителско съобщение за въвеждане на 2 -ри низ */
бегачки (S2,BUF_SIZE,stdin); / * потребителски вход първи низ, съхранява се в S2 */
S2[ стрън (S2)-1] = ' 0';

stringconcatenate(S1,S2); / * Извикайте функцията със S1, S2 като параметри */

printf ('комбинация от низове ='%s 'н',S1);
връщане 0;
}

Моментни снимки на програмата и изход:

Текстово описание се генерира автоматично

Текстово описание се генерира автоматично

Конкатенация чрез използване на функции

Функцията strconcatenate () се извиква от main (), за да комбинира два низа.

Функцията получава дължината на string1, като използва stringlen (string1).

Свържете елементите на низ2 [i] в ​​низ1 [i+j]. Тази стъпка ще се повтаря, докато низът е празен. Тук съсеждаме string2 към string1 в края на string1.

Свързаният низ (низ 1) ще бъде получен до края, когато всички итерации на цикъла for ще бъдат изпълнени.

Main () отпечатва конкатенирания низ S1

#включва

#включва

#дефинирайте BUF_SIZE 256

/ * функция за реализиране на конкатенация на низ според горното описание */
невалиденstrconcatenate(char *низ1, char*низ2)
{
inti;
intй= стрън (низ1);
за(i=0;низ2[i];i++)
{
низ1[i+й]=низ2[i];
}
низ1[i+й]= ' 0';
}
intглавен()
{
charниз1[BUF_SIZE],низ2[BUF_SIZE];
printf ('Въведете първия низ:'); / * Потребителско съобщение за 1 -ви низ */
бегачки (низ1,BUF_SIZE,stdin); / * Въвеждане от потребителя втори низ, съхранен в низ1 */
низ1[ стрън (низ1)-1] = ' 0';

printf ('Въведете втория низ:'); / * Потребителско съобщение за 2 -ри низ */
бегачки (низ2,BUF_SIZE,stdin); / * Въвеждане от потребителя втори низ, съхранен в низ2 */
низ2[ стрън (низ2)-1] = ' 0';

strconcatenate(низ1,низ2); /* Извикайте функцията със string1 и string2 като аргументи*/

printf ('Резултатен низ = %s'н',низ1);
връщане 0;
}

Моментни снимки на програмата и изход:

Текстово описание се генерира автоматично

Текстово описание се генерира автоматично

Свързване на низове чрез memcpy

С помощта на функцията memcpy () конкатенацията на низ се извършва чрез копиране дума по дума от един буфер на низ към края на друг буфер от низове, където размерът на думата е 4 байта, като се има предвид, че работим на 32 -битова машина, докато когато правим конкатенация на низ от използвайки конкатенация на низ чрез функция strcat (), конкатенацията се извършва чрез копиране на байт по байт от един буфер на низ в друг буфер на низ.

Този подход е ефективен по отношение на производителността.

Единственото съображение при използване на memcpy е да се погрижите за „ 0“.

C програма за постигане на strcat с memcpy:

#включва

#включва

#дефинирайте BUF_SIZE 256

Анулиране на strcat_memcpy(char *S1, char *S2)
{
intдължина 1,дължина 2;
дължина 1= стрън (S1);
дължина 2= стрън (S2);
memcpy (S1+дължина 1,S2,дължина 2);
}
intглавен()
{

charниз1[BUF_SIZE],низ2[BUF_SIZE];
printf ('Въведете първия низ:'); / * Потребителско съобщение за 1 -ви низ */
бегачки (низ1,BUF_SIZE,stdin); / * Въвеждане от потребителя втори низ, съхранен в низ1 */
низ1[ стрън (низ1)-1] = ' 0';

printf ('Въведете втория низ:'); / * Потребителско съобщение за 2 -ри низ */
бегачки (низ2,BUF_SIZE,stdin); / * Въвеждане от потребителя втори низ, съхранен в низ2 */
низ2[ стрън (низ2)-1] = ' 0';

strcat_memcpy(низ1,низ2); /* Извикайте функцията със string1 и string2 като аргументи*/

printf ('Резултатен низ = %s'н',низ1);
връщане 0;


}

Моментни снимки на програмата и изход:

Текстово описание се генерира автоматично

Текстово описание се генерира автоматично

Заключение:

С цялата тази дискусия можем да завършим низовото свързване в C. Виждали сме много примери и примерни програми за конкатенация на низове. Ще припомним основните елементи: Има два начина, единият със стандарт C, а другият е дефиниран от потребителя начин. Потребителски дефинирани могат да бъдат много видове, в зависимост от това как потребителят иска да приложи конкатенация на низ.