C Concatenare șir

C String Concatenation



Concatenarea este procesul de a atașa al doilea șir la sfârșitul primului șir. În acest articol vom discuta despre cum să concatenăm șirurile în C folosind diferite metode.

Funcția standard de bibliotecă C care este utilizată pentru a concatena șirul este strcat ().







Prototipul funcției:

$char * strcat (str1,str2);

unde str1 este primul șir și str2 este al doilea șir. Valoarea returnată a funcției este indicatorul către șirul concatenat.



Acum, cu ajutorul exemplului, vom vedea cum se realizează concatenarea.



Exemplul 1:

$ strcat (str1,str2);
unde str1 este Bella
str2 este Whitmann

după concatenarea șirului,primul șir va fi

str1 Bella Whitmann
str2 Whitmann

în timp ce șirul 2 va rămâne același.





Exemplul 2:

$ strcat (str2,str1);
unde str1 este Bella
str2 este Whitmann

după concatenarea șirului,șirul concatenat va fi

str1 Bella
str2 Bella Whitmann

în timp ce șirul 1 va rămâne același.

Declarație în fișierul antet C.

Funcțiile de manipulare a șirurilor sunt declarate sub fișierul header. Dacă doriți să utilizați funcția standard pentru a concatena, acest fișier antet trebuie inclus.



Prin urmare, putem realiza concatenarea șirurilor în două moduri. Una este folosirea funcției de bibliotecă C standard și alta este fără utilizarea funcției de bibliotecă C. Următoarele sunt exemple de programe pentru a demonstra ambele moduri. Concatenarea șirurilor fără utilizarea funcției de bibliotecă C poate fi implementată în mai multe moduri.

Vom discuta despre asta și în secțiunile următoare, cu un exemplu.

Concatenarea a două șiruri de caractere folosind funcția C Library

#include

#include

#define BUF_SIZE 256
intprincipal()
{
charS1[BUF_SIZE],S2[BUF_SIZE]; / * Două buffere de șir * /

printf ('Introduceți primul șir n'); ] / * Imprimați mesajul pe consolă pentru ca utilizatorul să introducă primul șir * /
fgets (S1,BUF_SIZE,stdin); / * stocați șirul de introducere a utilizatorului în bufferul S1 * /
S1[ strlen (S1)-1] = ' 0';

printf ('Introduceți al doilea șir n');/ * Imprimați mesajul către utilizator pentru a introduce al doilea șir * /
fgets (S2,BUF_SIZE,stdin); / * stochează șirul de introducere a utilizatorului în buffer S2 * /
S2[ strlen (S2)-1] = ' 0';

strcat (S1,S2); / * Apelați funcția standard cu șiruri S1 și S2 * /

printf (' nȘirul concatenat este% s n n',S1); / * Ieșire: S1 se adaugă cu S2 * /

întoarcere 0;
}

Instantanee ale programului și ieșire:

Text Descriere generată automat

Descrierea textului generată automat cu încredere medie

Concatenarea a două șiruri fără utilizarea funcției de bibliotecă

Folosind bucla pentru a copia al doilea șir la sfârșitul primului șir.

#include

#include

#define BUF_SIZE 256
intprincipal()
{
charS1[BUF_SIZE],S2[BUF_SIZE]; / * Declarați tampoanele S1, S2 atât pentru șirul * /
intlungime= 0,eu,j; / * Variabile necesare pentru traversarea buclei * /

printf („Introduceți primul șir”); / * Imprimați mesajul utilizatorului pentru a introduce primul șir * /
fgets (S1,BUF_SIZE,stdin); / * șirul de introducere a utilizatorului va fi stocat în S1 * /
S1[ strlen (S1)-1] = ' 0';

printf („Introduceți al doilea șir”); / * Imprimați mesajul utilizatorului pentru a introduce al doilea șir * /
fgets (S2,BUF_SIZE,stdin); / * șirul de introducere a utilizatorului va fi stocat în S2 * /
S2[ strlen (S2)-1] = ' 0';
/ * Treceți primul șir pentru a găsi lungimea S1 * /
pentru(eu=0;S1[eu]! =' 0';eu++)
{
lungime=lungime+1;
}

/ * lungimea va avea sfârșitul S1, începe de la lungime și copiază întregul S2 în S1 * /
pentru(eu=lungime,j=0;S2[j]! =' 0';eu++,j++)
{
S1[eu]=S2[j];
S1[eu]=' 0';
}

/ * Imprimați S1, rezultatul concatenat * /
printf (' nȘirul concatenat este% s n n',S1);
întoarcere 0;
}

Instantanee ale programului și ieșire:

Text Descriere generată automat

Text Descriere generată automat

Un alt mod de funcție fără bibliotecă

Concatenare folosind recursivitate:

Funcția stringconcatenate () va fi utilizată pentru a obține lungimea șirului1. Dacă S2 este gol, atunci un caracter nul va fi atribuit lui S2.

Dacă caracterul nul nu este atribuit lui S2 decât adăugați elementul lui S2 la sfârșitul lui S1, adică S1 [i + j] = S2 [j], aceasta crește valoarea lui i în șir.

O funcție se va numi ea însăși prin trecerea șirurilor reformate (S1, S2) ca argument. Va fi apelat din nou și din nou până când S2 este gol.

S1 concatenat va fi tipărit de main () ca

#include

#include

#define BUF_SIZE 256

/ * funcție recursivă pentru a implementa concatenarea șirului conform descrierii de mai sus * /
nulstringconcatenate(char *S1,char *S2)
{
static inteu=0;
static intj;
j= strlen (S1);
dacă(!S2[eu])
{
S2[eu]=' 0';
}
altceva
{
S1[j] =S2[eu];
S1[j+1] = ' 0';
eu++;
stringconcatenate(S1,S2);
}
}
intprincipal()
{
charS1[BUF_SIZE],S2[BUF_SIZE];

printf ('Introduceți valoarea primului șir:'); / * mesaj utilizator pentru introducerea primului șir * /
fgets (S1,BUF_SIZE,stdin); / * introducerea utilizatorului primul șir, stocarea în S1 * /
S1[ strlen (S1)-1] = ' 0';

printf ('Introduceți valoarea celui de-al doilea șir:'); / * mesaj utilizator pentru introducerea al doilea șir * /
fgets (S2,BUF_SIZE,stdin); / * introdus de utilizator primul șir, stocați în S2 * /
S2[ strlen (S2)-1] = ' 0';

stringconcatenate(S1,S2); / * Apelați funcția cu S1, S2 ca parametri * /

printf ('combinație de șiruri ='% s ' n',S1);
întoarcere 0;
}

Instantanee ale programului și ieșire:

Text Descriere generată automat

Text Descriere generată automat

Concatenare prin utilizarea funcțiilor

Funcția strconcatenate () este apelată de main () pentru a combina două șiruri.

Funcția obține lungimea șirului1 utilizând șirul (șirul1).

Alăturați-vă elementelor șirului2 [i] din șirul1 [i + j]. Acest pas va fi repetat până când șirul este gol. Aici, alăturăm șirul2 la șirul1 la sfârșitul șirului1.

Șirul concatenat (șirul 1) va fi primit până la sfârșit atunci când vor fi efectuate toate iterațiile pentru buclă.

Main () tipărește șirul concatenat S1

#include

#include

#define BUF_SIZE 256

/ * funcție pentru a implementa concatenarea șirului conform descrierii de mai sus * /
nulstrconcatenate(char *șirul 1, char*șir2)
{
inteu;
intj= strlen (șirul 1);
pentru(eu=0;şir2[eu];eu++)
{
șirul 1[eu+j]=șir2[eu];
}
șirul 1[eu+j]= ' 0';
}
intprincipal()
{
charșirul 1[BUF_SIZE],șir2[BUF_SIZE];
printf ('Introduceți primul șir:'); / * Mesaj utilizator pentru primul șir * /
fgets (șirul 1,BUF_SIZE,stdin); / * Intrarea utilizatorului al doilea șir, stocat în șirul 1 * /
șirul 1[ strlen (șirul 1)-1] = ' 0';

printf ('Introduceți al doilea șir:'); / * Mesaj utilizator pentru al doilea șir * /
fgets (șir2,BUF_SIZE,stdin); / * Intrarea utilizatorului al doilea șir, stocat în șirul2 * /
șir2[ strlen (șir2)-1] = ' 0';

strconcatenate(șirul 1,șir2); / * Apelați funcția cu șirul1 și șirul2 ca argumente * /

printf („Șir rezultat =% s” n',șirul 1);
întoarcere 0;
}

Instantanee ale programului și ieșire:

Text Descriere generată automat

Text Descriere generată automat

Concatenarea șirurilor utilizând memcpy

Prin utilizarea funcției memcpy (), concatenarea șirului se realizează prin copierea cuvânt cu cuvânt dintr-un buffer șir la sfârșitul unui alt buffer șir, unde dimensiunea cuvântului este de 4 octeți, având în vedere că rulăm pe o mașină de 32 de biți, în timp ce când facem concatenarea șirului de către folosind concatenarea șirului utilizând funcția strcat (), concatenarea se face prin copierea octet cu octet dintr-un buffer de șiruri în alt buffer de șiruri.

Această abordare este eficientă din punct de vedere al performanței.

Singurul aspect în timp ce utilizați memcpy este să aveți grijă de „ 0”.

Programul C pentru a obține strcat cu memcpy:

#include

#include

#define BUF_SIZE 256

Anulați strcat_memcpy(char *S1, char *S2)
{
intlungime1,lungime2;
lungime1= strlen (S1);
lungime2= strlen (S2);
memcpy (S1+lungime1,S2,lungime2);
}
intprincipal()
{

charșirul 1[BUF_SIZE],șir2[BUF_SIZE];
printf ('Introduceți primul șir:'); / * Mesaj utilizator pentru primul șir * /
fgets (șirul 1,BUF_SIZE,stdin); / * Intrarea utilizatorului al doilea șir, stocat în șirul 1 * /
șirul 1[ strlen (șirul 1)-1] = ' 0';

printf ('Introduceți al doilea șir:'); / * Mesaj utilizator pentru al doilea șir * /
fgets (șir2,BUF_SIZE,stdin); / * Intrarea utilizatorului al doilea șir, stocat în șirul2 * /
șir2[ strlen (șir2)-1] = ' 0';

strcat_memcpy(șirul 1,șir2); / * Apelați funcția cu șirul1 și șirul2 ca argumente * /

printf („Șir rezultat =% s” n',șirul 1);
întoarcere 0;


}

Instantanee ale programului și ieșire:

Text Descriere generată automat

Text Descriere generată automat

Concluzie:

Cu toată această discuție putem încheia concatenarea șirului în C. Am văzut multe exemple și exemple de programe pentru concatenarea șirurilor. Ne vom aminti principalele elemente: Există două moduri, una cu standard C și alta este definită de utilizator. Definit de utilizator poate fi în plus de mai multe tipuri, depinde de modul în care utilizatorul dorește să implementeze concatenarea șirului.