C Stringide liitmine

C String Concatenation



Ühendamine on protsess, mis lisab teise stringi esimese stringi lõppu. Selles artiklis käsitleme stringide ühendamist C -s, kasutades erinevaid meetodeid.

Standardne C -raamatukogu funktsioon, mida kasutatakse stringi ühendamiseks, on strcat ().







Funktsiooni prototüüp:

$süsi * strcat (str1,str2);

kus str1 on esimene string ja str2 on teine ​​string. Funktsiooni tagastusväärtus on kursor ühendatud stringile.



Nüüd näeme näite abil, kuidas ühendamine toimub.



Näide 1:

$ strcat (str1,str2);
kus str1 on Bella
str2 on Whitmann

pärast stringi liitmist,esimene string saab olema

str1 Bella Whitmann
str2 Whitmann

samas string2 jääb samaks.





Näide2:

$ strcat (str2,str1);
kus str1 on Bella
str2 on Whitmann

pärast stringi liitmist,on ühendatud string

str1 Bella
str2 Bella Whitmann

samas string1 jääb samaks.

Deklaratsioon C päisefailis

Stringide käitlemise funktsioonid on deklareeritud päisefaili all. Kui soovite ühendada standardfunktsiooni, tuleb see päisefail lisada.



Seega saame stringi ühendamise saavutada kahel viisil. Üks on standardse C raamatukogu funktsiooni kasutamine ja teine ​​ilma C raamatukogu funktsiooni kasutamiseta. Allpool on näidisprogrammid, mis näitavad mõlemat võimalust. Stringide liitmist ilma C -raamatukogu funktsiooni kasutamata saab rakendada mitmel viisil.

Me arutame seda ka järgmistes näidete osades.

Kahe stringi ühendamine C -raamatukogu funktsiooni abil

#kaasake

#kaasake

#defineeri BUF_SIZE 256
intpeamine()
{
süsiS1[BUF_SIZE],S2[BUF_SIZE]; / * Kaks stringipuhvrit */

printf ('Sisestage esimene string n'); ] /* Printige sõnum konsooli, et kasutaja saaks sisestada esimese stringi*/
fgets (S1,BUF_SIZE,stdin); / * salvesta kasutaja sisestatud string S1 puhverisse */
S1[ strlen (S1)-1] = ' 0';

printf ('Sisestage teine ​​string n');/* Printige teade kasutajale teise stringi sisestamiseks*/
fgets (S2,BUF_SIZE,stdin); / * salvesta kasutaja sisestatud string S2 puhvrisse */
S2[ strlen (S2)-1] = ' 0';

strcat (S1,S2); / *Helistage standardfunktsioonile stringidega S1 ja S2 */

printf (' nÜhendatud string on %s n n',S1); / *Väljund: S1 lisatakse S2 -ga */

tagasi 0;
}

Programmi ja väljundi hetktõmmised:

Tekstikirjeldus luuakse automaatselt

Teksti kirjeldus genereeritakse automaatselt keskmise usaldusega

Kahe stringi ühendamine ilma raamatukogu funktsiooni kasutamata

Kasutamine silmuse jaoks teise stringi kopeerimiseks esimese stringi lõpus.

#kaasake

#kaasake

#defineeri BUF_SIZE 256
intpeamine()
{
süsiS1[BUF_SIZE],S2[BUF_SIZE]; /* Deklareerige puhvrid S1, S2 mõlema stringi jaoks*/
intpikkus= 0,i,j; /*Silmuste läbimiseks vajalikud muutujad*/

printf ('Sisestage esimene string'); / * Printige kasutaja sõnum esimese stringi sisestamiseks */
fgets (S1,BUF_SIZE,stdin); /* kasutaja sisestatud string salvestatakse S1 -sse*/
S1[ strlen (S1)-1] = ' 0';

printf ('Sisesta teine ​​string'); / * Teise stringi sisestamiseks printige kasutaja sõnum */
fgets (S2,BUF_SIZE,stdin); /* kasutaja sisestatud string salvestatakse S2 -sse*/
S2[ strlen (S2)-1] = ' 0';
/* Sirvige esimest stringi, et leida pikkus S1*/
eest(i=0;S1[i]! =' 0';i++)
{
pikkus=pikkus+1;
}

/*pikkusel on S1 lõpp, alusta pikkusest ja kopeeri kogu S2 S1 -sse*/
eest(i=pikkus,j=0;S2[j]! =' 0';i++,j++)
{
S1[i]=S2[j];
S1[i]=' 0';
}

/ *Printige S1, ühendatud tulemus */
printf (' nÜhendatud string on %s n n',S1);
tagasi 0;
}

Programmi ja väljundi hetktõmmised:

Tekstikirjeldus luuakse automaatselt

Tekstikirjeldus luuakse automaatselt

Teine võimalus ilma raamatukogu funktsioonita

Konkureerimine rekursiooni abil:

String1 pikkuse saamiseks kasutatakse funktsiooni stringconcatenate (). Kui S2 on tühi, määratakse S2 -le tühimärk.

Kui S2 -le pole määratud nullmärki, lisage S1 lõppu S2 element S1 [i+j] = S2 [j], suurendab see i väärtust stringis.

Funktsiooni nimetatakse ise, edastades argumendina reformitud stringid (S1, S2). Seda helistatakse ikka ja jälle, kuni S2 on tühi.

Ühendatud S1 prinditakse main () poolt

#kaasake

#kaasake

#defineeri BUF_SIZE 256

/ * rekursiivne funktsioon stringide liitmise rakendamiseks vastavalt ülaltoodud kirjeldusele */
tühinestringconcatenate(süsi *S1,süsi *S2)
{
staatiline inti=0;
staatiline intj;
j= strlen (S1);
kui(!S2[i])
{
S2[i]=' 0';
}
muidu
{
S1[j] =S2[i];
S1[j+1] = ' 0';
i++;
stringconcatenate(S1,S2);
}
}
intpeamine()
{
süsiS1[BUF_SIZE],S2[BUF_SIZE];

printf ('Sisestage esimese stringi väärtus:'); / * kasutaja sõnum 1. stringi sisestamiseks */
fgets (S1,BUF_SIZE,stdin); / * kasutaja sisestab esimese stringi, salvestage S1 -s */
S1[ strlen (S1)-1] = ' 0';

printf ('Sisestage teise stringi väärtus:'); / * kasutaja sõnum teise stringi sisestamiseks */
fgets (S2,BUF_SIZE,stdin); / * kasutaja sisestab esimese stringi, salvestab S2 -s */
S2[ strlen (S2)-1] = ' 0';

stringconcatenate(S1,S2); / * Helistage funktsioonile parameetritega S1, S2 */

printf ('stringide kombinatsioon ='%s ' n',S1);
tagasi 0;
}

Programmi ja väljundi hetktõmmised:

Tekstikirjeldus luuakse automaatselt

Tekstikirjeldus luuakse automaatselt

Ühendamine funktsioonide abil

Funktsiooni strconcatenate () kutsub main () kahe stringi ühendamiseks.

Funktsioon saab string1 pikkuse, kasutades stringlen (string1).

Ühendage string2 [i] elemendid string1 [i+j]. Seda sammu korratakse, kuni string on tühi. Siin ühendame stringi 2 stringiga 1 string1 lõpus string1.

Ühendatud string (string 1) saabub lõpuks, kui kõik silmuse iteratsioonid sooritatakse.

Peamine () prindib ühendatud stringi S1

#kaasake

#kaasake

#defineeri BUF_SIZE 256

/ * funktsioon stringide liitmise rakendamiseks vastavalt ülaltoodud kirjeldusele */
tühinestrconcatenate(süsi *string1, süsi*string2)
{
inti;
intj= strlen (string1);
eest(i=0;string2[i];i++)
{
string1[i+j]=string2[i];
}
string1[i+j]= ' 0';
}
intpeamine()
{
süsistring1[BUF_SIZE],string2[BUF_SIZE];
printf ('Sisestage esimene string:'); / * Kasutaja sõnum 1. stringi jaoks */
fgets (string1,BUF_SIZE,stdin); / * Kasutaja sisestab teise stringi, salvestatud stringiks1 */
string1[ strlen (string1)-1] = ' 0';

printf ('Sisestage teine ​​string:'); / * Kasutaja sõnum teisele stringile */
fgets (string2,BUF_SIZE,stdin); / * Kasutaja sisestab teise stringi, salvestatakse stringiks2 */
string2[ strlen (string2)-1] = ' 0';

strconcatenate(string1,string2); /* Helistage funktsioonile argumentidega string1 ja string2*/

printf ('Tulemusstring = %s' n',string1);
tagasi 0;
}

Programmi ja väljundi hetktõmmised:

Tekstikirjeldus luuakse automaatselt

Tekstikirjeldus luuakse automaatselt

Stringide liitmine memcpy abil

Funktsiooni memcpy () abil saab stringi konkatenatsiooni kopeerida sõna -sõnalt ühest stringipuhvrist teise stringipuhvri lõppu, kus sõna suurus on 4 baiti, arvestades, et me töötame 32 -bitises masinas, samas kui me tegeleme stringide ühendamisega kasutades stringide liitmist funktsiooni strcat () abil, toimub liitmine kopeerides baitide kaupa ühest stringipuhvrist teise stringipuhvrisse.

See lähenemine on tulemuslik.

Ainus kaalutlus memcpy kasutamisel on ' 0' eest hoolitsemine.

C -programm strcati saavutamiseks memcpy abil:

#kaasake

#kaasake

#defineeri BUF_SIZE 256

Tühine strcat_memcpy(süsi *S1, süsi *S2)
{
intpikkus1,pikkus2;
pikkus1= strlen (S1);
pikkus2= strlen (S2);
mäletatav (S1+pikkus1,S2,pikkus2);
}
intpeamine()
{

süsistring1[BUF_SIZE],string2[BUF_SIZE];
printf ('Sisestage esimene string:'); / * Kasutaja sõnum 1. stringi jaoks */
fgets (string1,BUF_SIZE,stdin); / * Kasutaja sisestab teise stringi, salvestatud stringiks1 */
string1[ strlen (string1)-1] = ' 0';

printf ('Sisestage teine ​​string:'); / * Kasutaja sõnum teisele stringile */
fgets (string2,BUF_SIZE,stdin); / * Kasutaja sisestab teise stringi, salvestatakse stringiks2 */
string2[ strlen (string2)-1] = ' 0';

strcat_memcpy(string1,string2); /* Helistage funktsioonile argumentidega string1 ja string2*/

printf ('Tulemusstring = %s' n',string1);
tagasi 0;


}

Programmi ja väljundi hetktõmmised:

Tekstikirjeldus luuakse automaatselt

Tekstikirjeldus luuakse automaatselt

Järeldus:

Kogu selle arutelu põhjal võime lõpetada stringide ühendamise C. Me oleme näinud palju näiteid ja näidisprogramme stringide ühendamiseks. Tuletame meelde peamisi punkte: On kaks võimalust, üks C -standardiga ja teine ​​kasutaja määratletud viisil. Kasutaja määratletud võib olla ka mitut tüüpi, sõltuvalt sellest, kuidas kasutaja soovib stringide liitmist rakendada.