8.6.3. Concatenarea sirurilor de caractere

2019/03/14 in Programare in C

Bibliotecile limbajelor C si C++ contin functii care permit concatenarea unui sir de caractere la sfarsitul unui alt sir de caractere.

Una dintre ele are prototipul:

char *strcat(char *dest, const char *sursa);

Aceasta functie copiaza sirul de caractere spre care pointeaza sursa in zona de memorie care urmeaza imediat dupa ultimul caracter propriu al sirului spre care pointeaza dest. Se presupune ca zona spre care pointeaza dest este suficienta pentru a pastra caracterele proprii celor doua siruri care se concateneaza, plus caracterul NUL care termina sirul rezultatin urma concatenarii.

Functia returneaza valoarea lui dest.

Exemplu:

char tab1[100] = "Limbajul C++";
char tab2[] = "este C incrementat";
strcat(tab1, " ");
/* concateneaza caracterul spatiu dupa al doile acaracter + /
pastrat in tab1 la initializare */
strcat(tab1, tab2);
/* concateneaza textul pastrat in tab2 la initializare, 
dupa spatiul concatenat prin instructiunea precedenta */

Observatie: Functia strcat, la fel ca strcpy, nu trebuie sa modifice sirul de caractere spre care pointeaza sursa.

O alta functie de biblioteca utilizata la concatenarea de siruri este functia strncat. Ea are prototipul:

char *strncat(char *dest, const char *sursa, unsigned n);

In acest caz se concateneaza, la sfarsitul sirului spre care pointeaza dest, cel mult n caractere ale sirului spre care pointeaza sursa.

Daca n > lungimea sirului spre care pointeaza sursa, atunci se concateneaza intregul sir, altfel numai primele n caractere ale acestuia.

Exemplu:

char tab1[100] = "Limbajul E este mai bun decat ";
char tab2[] = "limbajul C++ este un superset al lui C";
strncat(tab1, tab2, 12);

Dupa revenirea din functie, tabloul tab1 contine succesiunea de caractere:

Limbajul E este mai bun decat limbajul C++

8.6.4. Compararea sirurilor de caractere