C Povezovanje nizov

C String Concatenation



Združevanje je postopek dodajanja drugega niza na konec prvega niza. V tem članku bomo razpravljali o tem, kako združiti nize v C z različnimi metodami.

Standardna funkcija knjižnice C, ki se uporablja za združevanje niza, je strcat ().







Prototip funkcije:

$char * strcat (str1,str2);

kjer je str1 prvi niz in str2 je drugi niz. Vrnjena vrednost funkcije je kazalec na združeni niz.



Zdaj bomo s pomočjo primera videli, kako poteka združevanje.



Primer 1:

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

po združitvi niza,prvi niz bo

str1 Bella Whitmann
str2 Whitmann

medtem ko bo niz2 ostal enak.





Primer 2:

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

po združitvi niza,združeni niz bo

str1 Bella
str2 Bella Whitmann

medtem ko bo niz1 ostal enak.

Izjava v datoteki glave C

Funkcije upravljanja nizov so deklarirane v datoteki glave. Če želimo za povezovanje uporabiti standardno funkcijo, je treba to datoteko z glavo vključiti.



Tako lahko združevanje nizov dosežemo na dva načina. Ena je z uporabo funkcije knjižnice Standard C, druga pa brez uporabe funkcije knjižnice C. Sledijo primeri programov za prikaz obeh načinov. Združevanje nizov brez uporabe knjižnične funkcije C je mogoče izvesti na več načinov.

O tem bomo razpravljali tudi v naslednjih razdelkih s primerom.

Združevanje dveh nizov s funkcijo knjižnice C

#vključi

#vključi

#define BUF_SIZE 256
intglavni()
{
charS1[BUF_SIZE],S2[BUF_SIZE]; / * Dva nizovna medpomnilnika */

printf ('Vnesite prvi niz n'); ] /* Natisni sporočilo na konzolo, da uporabnik vnese prvi niz*/
fgets (S1,BUF_SIZE,stdin); / * shranite niz za vnos uporabnika v medpomnilnik S1 */
S1[ strlen (S1)-1] = ' 0';

printf ('Vnesite drugi niz n');/* Natisnite sporočilo uporabniku, da vnese drugi niz*/
fgets (S2,BUF_SIZE,stdin); / * shranite niz za vnos uporabnika v medpomnilnik S2 */
S2[ strlen (S2)-1] = ' 0';

strcat (S1,S2); / *Pokličite standardno funkcijo z nizoma S1 in S2 */

printf (' nZdruženi niz je %s n n',S1); / *Izhod: S1 se doda S2 */

vrnitev 0;
}

Posnetki programa in izhod:

Besedilni opis je samodejno ustvarjen

Besedilni opis je samodejno ustvarjen s srednje zaupanjem

Združevanje dveh nizov brez uporabe knjižnične funkcije

Z zanko for za kopiranje drugega niza na koncu prvega niza.

#vključi

#vključi

#define BUF_SIZE 256
intglavni()
{
charS1[BUF_SIZE],S2[BUF_SIZE]; /* Razglasite medpomnilnike S1, S2 za oba niza*/
intdolžino= 0,jaz,j; /*Spremenljivke, potrebne za prehod zanke*/

printf ('Vnesite prvi niz'); / * Natisnite uporabniško sporočilo za vnos prvega niza */
fgets (S1,BUF_SIZE,stdin); /* niz za vnos uporabnika bo shranjen v S1*/
S1[ strlen (S1)-1] = ' 0';

printf ('Vnesite drugi niz'); / * Natisnite uporabniško sporočilo za vnos drugega niza */
fgets (S2,BUF_SIZE,stdin); /* niz za vnos uporabnika bo shranjen v S2*/
S2[ strlen (S2)-1] = ' 0';
/* Premaknite prvi niz, da poiščete dolžino S1*/
za(jaz=0;S1[jaz]! =' 0';jaz++)
{
dolžino=dolžino+1;
}

/*dolžina bo imela konec S1, začenši z dolžine in kopirala celotno S2 v S1*/
za(jaz=dolžino,j=0;S2[j]! =' 0';jaz++,j++)
{
S1[jaz]=S2[j];
S1[jaz]=' 0';
}

/ *Natisnite S1, združeni rezultat */
printf (' nZdruženi niz je %s n n',S1);
vrnitev 0;
}

Posnetki programa in izhod:

Besedilni opis je samodejno ustvarjen

Besedilni opis je samodejno ustvarjen

Drug način brez knjižnične funkcije

Združevanje z uporabo rekurzije:

Za določitev dolžine niza1 bo uporabljena funkcija stringconcatenate (). Če je S2 prazen, bo S2 dodeljen ničelni znak.

Če ničelni znak ni dodeljen S2, potem na koncu S1 dodaj element S2, ki je S1 [i+j] = S2 [j], to poveča vrednost i v nizu.

Funkcija se bo klicala sama, tako da kot argument posreduje reformirane nize (S1, S2). Kliče se znova in znova, dokler S2 ni prazen.

Združeni S1 bo natisnjen z main () as

#vključi

#vključi

#define BUF_SIZE 256

/ * rekurzivna funkcija za izvedbo združevanja nizov po zgornjem opisu */
ničnostringconcatenate(char *S1,char *S2)
{
statična intjaz=0;
statična intj;
j= strlen (S1);
če(!S2[jaz])
{
S2[jaz]=' 0';
}
drugače
{
S1[j] =S2[jaz];
S1[j+1] = ' 0';
jaz++;
stringconcatenate(S1,S2);
}
}
intglavni()
{
charS1[BUF_SIZE],S2[BUF_SIZE];

printf ('Vnesite vrednost prvega niza:'); / * uporabniško sporočilo za vnos 1. niza */
fgets (S1,BUF_SIZE,stdin); / * uporabniški vnos prvi niz, shrani v S1 */
S1[ strlen (S1)-1] = ' 0';

printf ('Vnesite vrednost drugega niza:'); / * uporabniško sporočilo za vnos 2. niza */
fgets (S2,BUF_SIZE,stdin); / * uporabniški vnos prvi niz, shrani v S2 */
S2[ strlen (S2)-1] = ' 0';

stringconcatenate(S1,S2); / * Pokličite funkcijo s parametri S1, S2 */

printf ('kombinacija nizov ='%s ' n',S1);
vrnitev 0;
}

Posnetki programa in izhod:

Besedilni opis je samodejno ustvarjen

Besedilni opis je samodejno ustvarjen

Združevanje z uporabo funkcij

Funkcija strconcatenate () pokliče main () za združevanje dveh nizov.

Funkcija dobi dolžino niza1 z uporabo stringlen (niz1).

Združite elemente niza2 [i] v nizu1 [i+j]. Ta korak se bo ponavljal, dokler niz ni prazen. Tukaj na koncu niza1 povezujemo niz2 z nizom1.

Združeni niz (niz 1) bo prejet do konca, ko bodo izvedene vse ponovitve for zanke.

Main () natisne združeni niz S1

#vključi

#vključi

#define BUF_SIZE 256

/ * funkcija za izvedbo združevanja nizov po zgornjem opisu */
ničnostrconcatenate(char *niz1, char*niz2)
{
intjaz;
intj= strlen (niz1);
za(jaz=0;vrvica2[jaz];jaz++)
{
niz1[jaz+j]=niz2[jaz];
}
niz1[jaz+j]= ' 0';
}
intglavni()
{
charniz1[BUF_SIZE],niz2[BUF_SIZE];
printf ('Vnesite prvi niz:'); / * Sporočilo uporabnika za 1. niz */
fgets (niz1,BUF_SIZE,stdin); / * Drugi niz uporabnikovega vnosa, shranjen v nizu1 */
niz1[ strlen (niz1)-1] = ' 0';

printf ('Vnesite drugi niz:'); / * Uporabniško sporočilo za 2. niz */
fgets (niz2,BUF_SIZE,stdin); / * Drugi niz uporabnikovega vnosa, shranjen v nizu 2 */
niz2[ strlen (niz2)-1] = ' 0';

strconcatenate(niz1,niz2); /* Pokličite funkcijo z nizoma1 in nizom2 kot argumente*/

printf ('Niz rezultatov = %s' n',niz1);
vrnitev 0;
}

Posnetki programa in izhod:

Besedilni opis je samodejno ustvarjen

Besedilni opis je samodejno ustvarjen

Združevanje nizov z uporabo memcpy

Z uporabo funkcije memcpy () se združevanje niza izvede s kopiranjem besede za besedo iz enega nizovnega medpomnilnika na konec drugega medpomnilnika nizov, kjer je velikost besede 4 bajte, glede na to, da delujemo na 32 -bitnem računalniku, medtem ko povezovanje nizov izvajamo tako, da z združevanjem nizov s funkcijo strcat () se združevanje izvede tako, da se bajt po bajt kopira iz enega medpomnilnika niza v drugega medpomnilnika nizov.

Ta pristop je učinkovit.

Edini premislek pri uporabi memcpy je skrb za ' 0'.

Program C za doseganje strcat z memcpy:

#vključi

#vključi

#define BUF_SIZE 256

Void strcat_memcpy(char *S1, char *S2)
{
intdolžina 1,dolžina 2;
dolžina 1= strlen (S1);
dolžina 2= strlen (S2);
memcpy (S1+dolžina 1,S2,dolžina 2);
}
intglavni()
{

charniz1[BUF_SIZE],niz2[BUF_SIZE];
printf ('Vnesite prvi niz:'); / * Sporočilo uporabnika za 1. niz */
fgets (niz1,BUF_SIZE,stdin); / * Drugi niz uporabnikovega vnosa, shranjen v nizu1 */
niz1[ strlen (niz1)-1] = ' 0';

printf ('Vnesite drugi niz:'); / * Uporabniško sporočilo za 2. niz */
fgets (niz2,BUF_SIZE,stdin); / * Drugi niz uporabnikovega vnosa, shranjen v nizu 2 */
niz2[ strlen (niz2)-1] = ' 0';

strcat_memcpy(niz1,niz2); /* Pokličite funkcijo z nizoma1 in nizom2 kot argumente*/

printf ('Niz rezultatov = %s' n',niz1);
vrnitev 0;


}

Posnetki programa in izhod:

Besedilni opis je samodejno ustvarjen

Besedilni opis je samodejno ustvarjen

Zaključek:

Z vso to razpravo lahko zaključimo povezovanje nizov v C. Videli smo veliko primerov in vzorčnih programov za združevanje nizov. Spomnili se bomo glavnih postavk: Obstajata dva načina, eden s standardom C, drugi pa način, ki ga določi uporabnik. Uporabniško definirano je lahko tudi več vrst, odvisno od tega, kako želi uporabnik izvesti združevanje nizov.