C String sammenkobling

C String Concatenation



Sammenkopling er prosessen for å legge til den andre strengen til slutten av den første strengen. I denne artikkelen skal vi diskutere hvordan man kobler sammen strenger i C ved å bruke forskjellige metoder.

Standard C -biblioteksfunksjonen som brukes til å sammenkoble streng er strcat ().







Funksjon Prototype:

$røye * strcat (str1,str2);

hvor str1 er første streng og str2 er andre streng. Returverdi for funksjonen er pekeren til den sammenkoblede strengen.



Nå vil vi ved hjelp av eksempel se hvordan sammenkoblingen utføres.



Eksempel 1:

$ strcat (str1,str2);
hvor str1 er Bella
str2 er Whitmann

etter sammenkobling av streng,første streng vil være

str1 Bella Whitmann
str2 Whitmann

mens string2 forblir den samme.





Eksempel 2:

$ strcat (str2,str1);
hvor str1 er Bella
str2 er Whitmann

etter sammenkobling av streng,sammenkoblet streng vil være

str1 Bella
str2 Bella Whitmann

mens string1 forblir den samme.

Erklæring i C Header File

Strenghåndteringsfunksjoner er deklarert under headerfil. Hvis man vil bruke standardfunksjonen til å sammenkoble, må denne overskriftsfilen inkluderes.



Derfor kan vi oppnå strengkobling på to måter. Den ene er ved bruk av standard C -biblioteksfunksjonen, og den andre er uten å bruke C -biblioteksfunksjonen. Følgende er eksempler på programmer for å demonstrere begge måtene. Strengkopling uten å bruke C -biblioteksfunksjonen kan implementeres på flere måter.

Vi vil også diskutere det i de neste avsnittene med eksempel.

Sammenkobling av to strenger ved å bruke C -bibliotekfunksjon

#inkludere

#inkludere

#define BUF_SIZE 256
inthoved-()
{
røyeS1[BUF_SIZE],S2[BUF_SIZE]; / * To strengbuffere */

printf ('Skriv inn den første strengen n'); ] /* Skriv ut melding til konsollen for brukeren å legge inn første streng*/
fgets (S1,BUF_SIZE,stdin); / * lagre brukerinndatastrengen i S1 -buffer */
S1[ strlen (S1)-1] = ' 0';

printf ('Skriv inn den andre strengen n');/* Skriv ut melding til bruker for å legge inn andre streng*/
fgets (S2,BUF_SIZE,stdin); / * lagre brukerinndatastrengen i S2 -buffer */
S2[ strlen (S2)-1] = ' 0';

strcat (S1,S2); / *Ring standardfunksjonen med S1- og S2 -strenger */

printf (' nSammenkoblet streng er %s n n',S1); / *Utgang: S1 blir lagt til med S2 */

komme tilbake 0;
}

Øyeblikksbilder av programmet og utdataene:

Tekstbeskrivelse genereres automatisk

Tekstbeskrivelse genereres automatisk med middels tillit

Sammenkobling av to strenger uten å bruke bibliotekfunksjon

Bruker for loop for å kopiere den andre strengen på slutten av den første strengen.

#inkludere

#inkludere

#define BUF_SIZE 256
inthoved-()
{
røyeS1[BUF_SIZE],S2[BUF_SIZE]; /* Angi bufferne S1, S2 for begge strengen*/
intlengde= 0,Jeg,j; /*Variabler som trengs for loop -traversal*/

printf ('Skriv inn den første strengen'); / * Skriv ut brukermelding for å angi første streng */
fgets (S1,BUF_SIZE,stdin); /* brukerinndatastreng blir lagret i S1*/
S1[ strlen (S1)-1] = ' 0';

printf ('Skriv inn den andre strengen'); / * Skriv ut brukermelding for å angi andre streng */
fgets (S2,BUF_SIZE,stdin); /* brukerinndatastreng blir lagret i S2*/
S2[ strlen (S2)-1] = ' 0';
/* Krysser den første strengen for å finne lengden på S1*/
til(Jeg=0;S1[Jeg]! =' 0';Jeg++)
{
lengde=lengde+1;
}

/*lengden vil ha enden på S1, start fra lengden og kopier hele S2 til S1*/
til(Jeg=lengde,j=0;S2[j]! =' 0';Jeg++,j++)
{
S1[Jeg]=S2[j];
S1[Jeg]=' 0';
}

/ *Skriv ut S1, sammenkoplet resultat */
printf (' nSammenkoblet streng er %s n n',S1);
komme tilbake 0;
}

Øyeblikksbilder av programmet og utdataene:

Tekstbeskrivelse genereres automatisk

Tekstbeskrivelse genereres automatisk

En annen måte uten bibliotekfunksjon

Sammenkobling ved bruk av rekursjon:

Funksjonen stringconcatenate () brukes til å få lengden på string1. Hvis S2 er tomt, blir et null tegn tilordnet S2.

Hvis null tegn ikke er tilordnet S2 enn add element i S2 på slutten av S1 som er S1 [i+j] = S2 [j], øker dette verdien av i i strengen.

En funksjon vil bli kalt seg selv ved å passere de reformerte strengene (S1, S2) som et argument. Det vil bli ringt igjen og igjen til S2 er tom.

Den sammenkoblede S1 skrives ut av main () as

#inkludere

#inkludere

#define BUF_SIZE 256

/ * rekursiv funksjon for å implementere streng sammenkobling i henhold til beskrivelsen ovenfor */
tomromstringconcatenate(røye *S1,røye *S2)
{
statisk intJeg=0;
statisk intj;
j= strlen (S1);
hvis(!S2[Jeg])
{
S2[Jeg]=' 0';
}
ellers
{
S1[j] =S2[Jeg];
S1[j+1] = ' 0';
Jeg++;
stringconcatenate(S1,S2);
}
}
inthoved-()
{
røyeS1[BUF_SIZE],S2[BUF_SIZE];

printf ('Skriv inn verdien til den første strengen:'); / * brukermelding for å legge inn første streng */
fgets (S1,BUF_SIZE,stdin); / * brukerinput første streng, lagre i S1 */
S1[ strlen (S1)-1] = ' 0';

printf ('Skriv inn verdien til den andre strengen:'); / * brukermelding for å legge inn andre streng */
fgets (S2,BUF_SIZE,stdin); / * brukerinput første streng, lagre i S2 */
S2[ strlen (S2)-1] = ' 0';

stringconcatenate(S1,S2); / * Kall funksjonen med S1, S2 som parametere */

printf ('kombinasjon av strenger ='%s ' n',S1);
komme tilbake 0;
}

Øyeblikksbilder av programmet og utdataene:

Tekstbeskrivelse genereres automatisk

Tekstbeskrivelse genereres automatisk

Sammenkobling ved bruk av funksjoner

Funksjonen strconcatenate () kalles av main () for å kombinere to strenger.

Funksjonen får lengden på string1 ved å bruke stringlen (string1).

Ved siden av elementene i streng2 [i] i streng1 [i+j]. Dette trinnet vil gjentas til strengen er tom. Her grenser vi til strengen2 til streng1 på slutten av streng1.

Sammenkoblet streng (streng 1) vil bli mottatt innen slutten når alle iterasjonene av for loop vil bli utført.

Main () skriver ut den sammenkoblede strengen S1

#inkludere

#inkludere

#define BUF_SIZE 256

/ * funksjon for å implementere streng sammenkobling i henhold til beskrivelsen ovenfor */
tomromstrconcatenate(røye *streng1, røye*streng2)
{
intJeg;
intj= strlen (streng1);
til(Jeg=0;streng2[Jeg];Jeg++)
{
streng1[Jeg+j]=streng2[Jeg];
}
streng1[Jeg+j]= ' 0';
}
inthoved-()
{
røyestreng1[BUF_SIZE],streng2[BUF_SIZE];
printf ('Skriv inn den første strengen:'); / * Brukermelding for første streng */
fgets (streng1,BUF_SIZE,stdin); / * Brukerinngang andre streng, lagret i streng1 */
streng1[ strlen (streng1)-1] = ' 0';

printf ('Skriv inn den andre strengen:'); / * Brukermelding for 2. streng */
fgets (streng2,BUF_SIZE,stdin); / * Brukerinngang andre streng, lagret i streng2 */
streng2[ strlen (streng2)-1] = ' 0';

strconcatenate(streng1,streng2); /* Kall funksjonen med string1 og string2 som argumenter*/

printf ('Resulterende streng = %s' n',streng1);
komme tilbake 0;
}

Øyeblikksbilder av programmet og utdataene:

Tekstbeskrivelse genereres automatisk

Tekstbeskrivelse genereres automatisk

Streng sammenkobling ved hjelp av memcpy

Ved å bruke memcpy () -funksjonen, blir sammenkoplingen av strengen utført ved å kopiere ord for ord fra en strengbuffer til slutten av en annen strengbuffer der ordstørrelsen er 4 byte med tanke på at vi kjører på en 32 -biters maskin mens vi kjører streng sammenkobling med ved hjelp av strengkopling ved hjelp av funksjonen strcat (), gjøres sammenkopling ved å kopiere byte for byte fra en strengbuffer til en annen strengbuffer.

Denne tilnærmingen er ytelseseffektiv.

Den eneste vurderingen når du bruker memcpy er å ta vare på ‘ 0’.

C -program for å oppnå strcat med memcpy:

#inkludere

#inkludere

#define BUF_SIZE 256

Ugyldig strcat_memcpy(røye *S1, røye *S2)
{
intlengde1,lengde2;
lengde1= strlen (S1);
lengde2= strlen (S2);
memcpy (S1+lengde1,S2,lengde2);
}
inthoved-()
{

røyestreng1[BUF_SIZE],streng2[BUF_SIZE];
printf ('Skriv inn den første strengen:'); / * Brukermelding for første streng */
fgets (streng1,BUF_SIZE,stdin); / * Brukerinngang andre streng, lagret i streng1 */
streng1[ strlen (streng1)-1] = ' 0';

printf ('Skriv inn den andre strengen:'); / * Brukermelding for 2. streng */
fgets (streng2,BUF_SIZE,stdin); / * Brukerinngang andre streng, lagret i streng2 */
streng2[ strlen (streng2)-1] = ' 0';

strcat_memcpy(streng1,streng2); /* Kall funksjonen med string1 og string2 som argumenter*/

printf ('Resulterende streng = %s' n',streng1);
komme tilbake 0;


}

Øyeblikksbilder av programmet og utdataene:

Tekstbeskrivelse genereres automatisk

Tekstbeskrivelse genereres automatisk

Konklusjon:

Med all denne diskusjonen kan vi avslutte strengen sammenkobling i C. Vi har sett mange eksempler og eksempler på programmer for streng sammenkobling. Vi husker hovedelementene: Det er to måter, en med C -standard og en annen er brukerdefinert måte. Brukerdefinert kan videre være av mange typer, avhenger av hvordan brukeren ønsker å implementere streng sammenkobling.