C Povezivanje nizova

C String Concatenation



Konkatenacija je postupak dodavanja drugog niza na kraj prvog niza. U ovom članku ćemo raspravljati o tome kako spojiti nizove u C pomoću različitih metoda.

Standardna funkcija knjižnice C koja se koristi za spajanje niza je strcat ().







Prototip funkcije:

$char * strcat (str1,str2);

gdje je str1 prvi niz, a str2 drugi niz. Povratna vrijednost funkcije je pokazivač na ulančani niz.



Sada ćemo uz pomoć primjera vidjeti kako se vrši spajanje.



Primjer 1:

$ strcat (str1,str2);
gdje je str1 Bella
str2 je Whitmann

nakon spajanja niza,bit će prvi niz

str1 Bella Whitmann
str2 Whitmann

dok će niz2 ostati isti.





Primjer 2:

$ strcat (str2,str1);
gdje je str1 Bella
str2 je Whitmann

nakon spajanja niza,spojeni niz će biti

str1 Bella
str2 Bella Whitmann

dok će niz1 ostati isti.

Deklaracija u datoteci zaglavlja C

Funkcije rukovanja nizovima deklarirane su u datoteci zaglavlja. Ako netko želi koristiti standardnu ​​funkciju za spajanje, ovu datoteku zaglavlja treba uključiti.



Dakle, povezivanje nizova možemo postići na dva načina. Jedan je s korištenjem funkcije standardne biblioteke C, a drugi je bez upotrebe funkcije knjižnice C. Slijede primjeri programa koji pokazuju oba načina. Povezivanje nizova bez korištenja funkcije knjižnice C može se implementirati na više načina.

O tome ćemo također raspravljati u sljedećim odjeljcima s primjerom.

Povezivanje dva niza pomoću funkcije knjižnice C

#uključi

#uključi

#define BUF_SIZE 256
intglavni()
{
charS1[BUF_SIZE],S2[BUF_SIZE]; / * Dva međuspremnika niza */

printf ('Unesite prvi niz n'); ] /* Ispišite poruku na konzolu kako bi korisnik unio prvi niz*/
bjegunci (S1,BUF_SIZE,stdin); / * pohraniti korisnički unosni niz u S1 međuspremnik */
S1[ strlen (S1)-1] = ' 0';

printf ('Unesite drugi niz n');/* Ispišite poruku korisniku za unos 2. niza*/
bjegunci (S2,BUF_SIZE,stdin); / * spremi niz korisničkog unosa u S2 međuspremnik */
S2[ strlen (S2)-1] = ' 0';

strcat (S1,S2); / *Pozovite standardnu ​​funkciju sa nizovima S1 i S2 */

printf (' nSpojeni niz je %s n n',S1); / *Izlaz: S1 se dodaje S2 */

povratak 0;
}

Snimke programa i izlaz:

Automatski se generira tekstualni opis

Tekstualni opis automatski generiran sa srednjim povjerenjem

Spajanje dva niza bez korištenja funkcije knjižnice

Korištenje for petlje za kopiranje drugog niza na kraju prvog niza.

#uključi

#uključi

#define BUF_SIZE 256
intglavni()
{
charS1[BUF_SIZE],S2[BUF_SIZE]; /* Deklarirajte međuspremnike S1, S2 za oba niza*/
intduljina= 0,i,j; /*Varijable potrebne za prelazak petlje*/

printf ('Unesite prvi niz'); / * Ispišite korisničku poruku za unos prvog niza */
bjegunci (S1,BUF_SIZE,stdin); /* korisnički niz unosa bit će pohranjen u S1*/
S1[ strlen (S1)-1] = ' 0';

printf ('Unesite drugi niz'); / * Ispišite korisničku poruku za unos drugog niza */
bjegunci (S2,BUF_SIZE,stdin); /* korisnički niz unosa bit će pohranjen u S2*/
S2[ strlen (S2)-1] = ' 0';
/* Pomičite prvi niz kako biste pronašli duljinu S1*/
za(i=0;S1[i]! =' 0';i++)
{
duljina=duljina+1;
}

/*length će imati kraj S1, početi od dužine i kopirati cijeli S2 u S1*/
za(i=duljina,j=0;S2[j]! =' 0';i++,j++)
{
S1[i]=S2[j];
S1[i]=' 0';
}

/ *Ispišite S1, ujedinjeni rezultat */
printf (' nSpojeni niz je %s n n',S1);
povratak 0;
}

Snimke programa i izlaz:

Automatski se generira tekstualni opis

Automatski se generira tekstualni opis

Još jedan način bez funkcije knjižnice

Spajanje pomoću rekurzije:

Funkcija stringconcatenate () će se koristiti za dobivanje duljine string1. Ako je S2 prazan tada će S2 biti dodijeljen nulti znak.

Ako null znak nije dodijeljen S2, tada dodajte element S2 na kraju S1, to jest S1 [i+j] = S2 [j], to povećava vrijednost i u nizu.

Funkcija će se sama pozvati prosljeđivanjem reformiranih nizova (S1, S2) kao argument. Zvat će se iznova i iznova sve dok se S2 ne isprazni.

Složeni S1 bit će ispisan glavnim () kao

#uključi

#uključi

#define BUF_SIZE 256

/ * rekurzivna funkcija za provedbu povezivanja nizova prema gore navedenom opisu */
poništitistringconcatenate(char *S1,char *S2)
{
statički inti=0;
statički intj;
j= strlen (S1);
ako(!S2[i])
{
S2[i]=' 0';
}
drugo
{
S1[j] =S2[i];
S1[j+1] = ' 0';
i++;
stringconcatenate(S1,S2);
}
}
intglavni()
{
charS1[BUF_SIZE],S2[BUF_SIZE];

printf ('Unesite vrijednost prvog niza:'); / * korisnička poruka za unos 1. niza */
bjegunci (S1,BUF_SIZE,stdin); / * korisnički unos prvi niz, spremi u S1 */
S1[ strlen (S1)-1] = ' 0';

printf ('Unesite vrijednost drugog niza:'); / * korisnička poruka za unos 2. niza */
bjegunci (S2,BUF_SIZE,stdin); / * korisnički unos prvi niz, spremi u S2 */
S2[ strlen (S2)-1] = ' 0';

stringconcatenate(S1,S2); / * Pozovite funkciju sa S1, S2 kao parametrima */

printf ('kombinacija nizova ='%s ' n',S1);
povratak 0;
}

Snimke programa i izlaz:

Automatski se generira tekstualni opis

Automatski se generira tekstualni opis

Spajanje pomoću funkcija

Funkciju strconcatenate () poziva main () za kombiniranje dva niza.

Funkcija dobiva duljinu string1 pomoću stringlen (string1).

Pridružite elemente niza2 [i] u nizu1 [i+j]. Ovaj korak će se ponavljati sve dok niz nije prazan. Ovdje pridružimo string2 nizu1 na kraju niza1.

Uzastopni niz (niz 1) primit će se do kraja kada će se izvršiti sve iteracije for petlje.

Main () ispisuje ujedinjeni niz S1

#uključi

#uključi

#define BUF_SIZE 256

/ * funkcija za provedbu povezivanja nizova prema gore navedenom opisu */
poništitistrkonkatenatirati(char *niz 1, char*niz2)
{
inti;
intj= strlen (niz 1);
za(i=0;niz2[i];i++)
{
niz 1[i+j]=niz2[i];
}
niz 1[i+j]= ' 0';
}
intglavni()
{
charniz 1[BUF_SIZE],niz2[BUF_SIZE];
printf ('Unesite prvi niz:'); / * Korisnička poruka za prvi niz */
bjegunci (niz 1,BUF_SIZE,stdin); / * Drugi niz korisničkog unosa, spremljen u niz1 */
niz 1[ strlen (niz 1)-1] = ' 0';

printf ('Unesite drugi niz:'); / * Korisnička poruka za drugi niz */
bjegunci (niz2,BUF_SIZE,stdin); / * Drugi niz korisničkog unosa, spremljen u niz2 */
niz2[ strlen (niz2)-1] = ' 0';

strkonkatenatirati(niz 1,niz2); /* Pozovite funkciju sa string1 i string2 kao argumente*/

printf ('Rezultatski niz = %s' n',niz 1);
povratak 0;
}

Snimke programa i izlaz:

Automatski se generira tekstualni opis

Automatski se generira tekstualni opis

Povezivanje nizova pomoću memcpy

Korištenjem funkcije memcpy () povezivanje niza vrši se kopiranjem riječi po riječ iz jednog međuspremnika niza na kraj drugog međuspremnika niza gdje je veličina riječi 4 bajta s obzirom na to da radimo na 32 -bitnom stroju, dok spajanje niza radimo upotrebom povezivanja niza pomoću funkcije strcat () povezivanje se vrši kopiranjem bajta po bajt iz jednog međuspremnika niza u drugi međuspremnik nizova.

Ovaj pristup je učinkovit.

Jedino što morate uzeti u obzir pri korištenju memcpy jest voditi računa o ' 0'.

C program za postizanje strcat -a s memcpy:

#uključi

#uključi

#define BUF_SIZE 256

Prazan strcat_memcpy(char *S1, char *S2)
{
intduljina1,duljina 2;
duljina1= strlen (S1);
duljina 2= strlen (S2);
memcpy (S1+duljina1,S2,duljina 2);
}
intglavni()
{

charniz 1[BUF_SIZE],niz2[BUF_SIZE];
printf ('Unesite prvi niz:'); / * Korisnička poruka za prvi niz */
bjegunci (niz 1,BUF_SIZE,stdin); / * Drugi niz korisničkog unosa, spremljen u niz1 */
niz 1[ strlen (niz 1)-1] = ' 0';

printf ('Unesite drugi niz:'); / * Korisnička poruka za drugi niz */
bjegunci (niz2,BUF_SIZE,stdin); / * Drugi niz korisničkog unosa, spremljen u niz2 */
niz2[ strlen (niz2)-1] = ' 0';

strcat_memcpy(niz 1,niz2); /* Pozovite funkciju sa string1 i string2 kao argumente*/

printf ('Rezultatski niz = %s' n',niz 1);
povratak 0;


}

Snimke programa i izlaz:

Automatski se generira tekstualni opis

Automatski se generira tekstualni opis

Zaključak:

Uza svu ovu raspravu možemo zaključiti povezivanje nizova u C. Vidjeli smo mnoge primjere i uzorke programa za spajanje nizova. Prisjetit ćemo se glavnih stavki: Postoje dva načina, jedan sa standardom C, a drugi način koji definira korisnik. Korisnički definirano može biti više vrsta, ovisno o tome kako korisnik želi implementirati povezivanje nizova.