A karakterlánc összefűzésére használt szabványos C könyvtári függvény a strcat ().
Funkció prototípus:
$char * strcat (str1,str2);ahol az str1 az első sztring, az str2 pedig a második karakterlánc. A függvény visszatérési értéke a mutató az összefűzött karakterláncra.
Most egy példa segítségével látni fogjuk, hogyan történik az összefűzés.
1. példa:
$ strcat (str1,str2);ahol str1 Bella
str2 Whitmann
karakterlánc összefűzése után,az első karakterlánc lesz
str1 Bella Whitmann
str2 Whitmann
míg a string2 ugyanaz marad.
2. példa:
$ strcat (str2,str1);ahol str1 Bella
str2 Whitmann
karakterlánc összefűzése után,összefűzött karakterlánc lesz
str1 Bella
str2 Bella Whitmann
míg a string1 ugyanaz marad.
Nyilatkozat a C fejléc fájlban
A karakterlánc -kezelési funkciók a fejléc alatt vannak deklarálva. Ha valaki szabványos függvényt akar használni az összefűzéshez, akkor ezt a fejlécfájlt be kell építeni.
Ezért kétféleképpen érhetjük el a karakterláncok összefűzését. Az egyik a Standard C könyvtár funkció használata, a másik pedig a C könyvtár funkció használata nélkül. Az alábbiakban példaprogramok mutatják be mindkét módszert. A karakterlánc -összefűzés a C könyvtár funkció használata nélkül többféleképpen is megvalósítható.
Ezt is tárgyaljuk a következő példákban példákkal.
Két karakterlánc összefűzése a C Library függvény használatával
#befoglalni#befoglalni
#define BUF_SIZE 256
intfő-()
{
charS1[BUF_SIZE],S2[BUF_SIZE]; / * Két karakterlánc puffer */
printf ('Írja be az első karakterláncot n'); ] /* Üzenet nyomtatása a konzolra, hogy a felhasználó beírhassa az 1. karakterláncot*/
fgets (S1,BUF_SIZE,stdin); / * tárolja a felhasználói beviteli karakterláncot az S1 pufferben */
S1[ strlen (S1)-1] = ' 0';
printf ('Írja be a második karakterláncot n');/* Üzenet nyomtatása a felhasználónak a 2. karakterlánc beviteléhez*/
fgets (S2,BUF_SIZE,stdin); / * tárolja a felhasználói beviteli karakterláncot az S2 pufferben */
S2[ strlen (S2)-1] = ' 0';
strcat (S1,S2); / *Az alapfunkció hívása S1 és S2 karakterláncokkal */
printf (' nAz összefűzött karakterlánc %s n n',S1); / *Kimenet: az S1 kiegészül az S2 -vel */
Visszatérés 0;
}
Pillanatképek a programról és a kimenetről:
Két karakterlánc összefűzése könyvtári funkció használata nélkül
A loop használata a második karakterlánc másolására az első karakterlánc végén.
#befoglalni#befoglalni
#define BUF_SIZE 256
intfő-()
{
charS1[BUF_SIZE],S2[BUF_SIZE]; /* Deklarálja az S1, S2 puffereket mindkét karakterláncra*/
inthossz= 0,én,j; /*A hurok bejárásához szükséges változók*/
printf ('Írja be az első karakterláncot'); / * Felhasználói üzenet nyomtatása az első karakterlánc beviteléhez */
fgets (S1,BUF_SIZE,stdin); /* a felhasználói beviteli karakterlánc az S1 -ben lesz tárolva*/
S1[ strlen (S1)-1] = ' 0';
printf ('Írja be a második karakterláncot'); / * Felhasználói üzenet nyomtatása a második karakterlánc beviteléhez */
fgets (S2,BUF_SIZE,stdin); /* a felhasználói beviteli karakterlánc az S2 -ben lesz tárolva*/
S2[ strlen (S2)-1] = ' 0';
/* Hajtsa át az első karakterláncot, hogy megtalálja az S1 hosszát*/
számára(én=0;S1[én]! =' 0';én++)
{
hossz=hossz+1;
}
/*hosszának az S1 vége lesz, kezdje a hosszúságból, és másolja az egész S2 -t az S1 -be*/
számára(én=hossz,j=0;S2[j]! =' 0';én++,j++)
{
S1[én]=S2[j];
S1[én]=' 0';
}
/ *Nyomtassa ki az S1, összefűzött eredményt */
printf (' nAz összefűzött karakterlánc %s n n',S1);
Visszatérés 0;
}
Pillanatképek a programról és a kimenetről:
A könyvtári funkció nélküli másik módszer
Összekapcsolás rekurzió segítségével:
A stringconcatenate () függvény a string1 hosszának meghatározására szolgál. Ha az S2 üres, akkor nulla karakter lesz hozzárendelve az S2 -hez.
Ha nincs null karakter hozzárendelve az S2 -hez, akkor adja hozzá az S2 elemeit az S1 végéhez, azaz S1 [i+j] = S2 [j], ez növeli az i értékét a karakterláncban.
Egy függvényt úgy fogunk megnevezni, hogy a reformált karakterláncokat (S1, S2) argumentumként adja át. Újra és újra hívják, amíg az S2 ki nem ürül.
Az összefűzött S1 -et a main () as nyomtatja ki
#befoglalni#befoglalni
#define BUF_SIZE 256
/ * rekurzív függvény a karakterlánc -összefűzés megvalósításához a fenti leírás szerint */
üresstringconcatenate(char *S1,char *S2)
{
statikus intén=0;
statikus intj;
j= strlen (S1);
ha(!S2[én])
{
S2[én]=' 0';
}
más
{
S1[j] =S2[én];
S1[j+1] = ' 0';
én++;
stringconcatenate(S1,S2);
}
}
intfő-()
{
charS1[BUF_SIZE],S2[BUF_SIZE];
printf ('Írja be az első karakterlánc értékét:'); / * felhasználói üzenet az 1. karakterlánc beviteléhez */
fgets (S1,BUF_SIZE,stdin); / * a felhasználó adja meg az első karakterláncot, tárolja az S1 -ben */
S1[ strlen (S1)-1] = ' 0';
printf ('Írja be a második karakterlánc értékét:'); / * felhasználói üzenet a 2. karakterlánc beviteléhez */
fgets (S2,BUF_SIZE,stdin); / * a felhasználó adja meg az első karakterláncot, tárolja az S2 -ben */
S2[ strlen (S2)-1] = ' 0';
stringconcatenate(S1,S2); / * Hívja meg a funkciót S1, S2 paraméterként */
printf ('karakterláncok kombinációja ='%s ' n',S1);
Visszatérés 0;
}
Pillanatképek a programról és a kimenetről:
Összekapcsolás függvények használatával
A strconcatenate () függvényt a main () két karakterlánc egyesítésére hívja meg.
A függvény a stringlen (string1) használatával megkapja a string1 hosszát.
Kapcsolja össze a string2 [i] elemeit a string1 [i+j] -ben. Ezt a lépést addig ismételjük, amíg a karakterlánc ki nem ürül. Itt a string2 -t a string1 -hez kapcsoljuk a string1 végén.
Az összefűzött karakterlánc (1. karakterlánc) a végére érkezik, amikor a ciklus összes iterációja végrehajtásra kerül.
A main () kinyomtatja az összefűzött S1 karakterláncot
#befoglalni#befoglalni
#define BUF_SIZE 256
/ * függvény a karakterlánc -összefűzés megvalósításához a fenti leírás szerint */
üresstrconcatenate(char *karakterlánc1, char*karakterlánc2)
{
intén;
intj= strlen (karakterlánc1);
számára(én=0;húr2[én];én++)
{
karakterlánc1[én+j]=karakterlánc2[én];
}
karakterlánc1[én+j]= ' 0';
}
intfő-()
{
charkarakterlánc1[BUF_SIZE],karakterlánc2[BUF_SIZE];
printf ('Írja be az első karakterláncot:'); / * Felhasználói üzenet az 1. karakterlánchoz */
fgets (karakterlánc1,BUF_SIZE,stdin); / * A felhasználó által bevitt második karakterlánc, karakterláncban tárolva1 */
karakterlánc1[ strlen (karakterlánc1)-1] = ' 0';
printf ('Írja be a második karakterláncot:'); / * Felhasználói üzenet a 2. karakterlánchoz */
fgets (karakterlánc2,BUF_SIZE,stdin); / * A felhasználó által bevitt második karakterlánc, karakterláncba tárolva2 */
karakterlánc2[ strlen (karakterlánc2)-1] = ' 0';
strconcatenate(karakterlánc1,karakterlánc2); /* Hívja meg a függvényt string1 és string2 argumentumokkal*/
printf ('Eredményes karakterlánc = %s' n',karakterlánc1);
Visszatérés 0;
}
Pillanatképek a programról és a kimenetről:
Karakterlánc -összefűzés memcpy használatával
A memcpy () függvény használatával a karakterlánc összefűzése úgy történik, hogy szóról szóra átmásoljuk az egyik karakterlánc -puffert a másik karakterlánc -puffer végére, ahol a szó mérete 4 bájt, figyelembe véve, hogy 32 bites gépen futunk, miközben karakterlánc -összefűzést használva a strcat () függvény használatával, az összefűzés úgy történik, hogy byte byte -t másol az egyik karakterlánc -pufferből a másikba.
Ez a megközelítés teljesítményhatékony.
A memcpy használata során az egyetlen szempont a „ 0” gondozása.
C program a strcat memcpy eléréséhez:
#befoglalni#befoglalni
#define BUF_SIZE 256
Érvénytelen strcat_memcpy(char *S1, char *S2)
{
inthossza1,hossza2;
hossza1= strlen (S1);
hossza2= strlen (S2);
memcpy (S1+hossza1,S2,hossza2);
}
intfő-()
{
charkarakterlánc1[BUF_SIZE],karakterlánc2[BUF_SIZE];
printf ('Írja be az első karakterláncot:'); / * Felhasználói üzenet az 1. karakterlánchoz */
fgets (karakterlánc1,BUF_SIZE,stdin); / * A felhasználó által bevitt második karakterlánc, karakterláncban tárolva1 */
karakterlánc1[ strlen (karakterlánc1)-1] = ' 0';
printf ('Írja be a második karakterláncot:'); / * Felhasználói üzenet a 2. karakterlánchoz */
fgets (karakterlánc2,BUF_SIZE,stdin); / * A felhasználó által bevitt második karakterlánc, karakterláncba tárolva2 */
karakterlánc2[ strlen (karakterlánc2)-1] = ' 0';
strcat_memcpy(karakterlánc1,karakterlánc2); /* Hívja meg a függvényt string1 és string2 argumentumokkal*/
printf ('Eredményes karakterlánc = %s' n',karakterlánc1);
Visszatérés 0;
}
Pillanatképek a programról és a kimenetről:
Következtetés:
Mindezen vitákkal le tudjuk zárni a karakterlánc -összekapcsolást C. Sok példát és mintaprogramot láttunk a karakterlánc -összefűzéshez. Emlékeztetünk a főbb elemekre: Két módja van, az egyik C szabványú, a másik a felhasználó által meghatározott módon. A felhasználó által definiált sokféle lehet, attól függően, hogy a felhasználó hogyan kívánja végrehajtani a karakterlánc -összefűzést.