Skip to content

strcat

cpp
#include <cstring>
char* strcat(char* dest, char* sursa);

strcat vine de la string + catenare. Efect: lipeste sursa la sfarsitul lui dest. Returneaza dest.

Intern, strcat gaseste mai intai sfarsitul lui dest (prima pozitie cu '\0'), apoi copiaza sursa incepand de acolo:

cpp
strcat(dest, sursa);
// echivalent cu:
strcpy(dest + strlen(dest), sursa);

Exemplu cu tabel

dest = "ana", sursa = "are".

Inainte:

index01234567
destana\0????
sursaare\0

strlen(dest) = 3 — copierea incepe la dest[3].

Dupa strcat(dest, sursa):

index0123456
destanaare\0

Cum functioneaza intern

cpp
char* strcat(char* dest, char* sursa)
{
    int lg = strlen(dest), i;
    for (i = 0; sursa[i] != '\0'; i++)
        dest[lg + i] = sursa[i];
    dest[lg + i] = '\0';
    return dest;
}

Exemplu complet

cpp
#include <iostream>
#include <cstring>
using namespace std;

char prenume[50], nume[50], complet[100];

int main()
{
    cin >> prenume >> nume;
    strcpy(complet, prenume);
    strcat(complet, " ");
    strcat(complet, nume);
    cout << complet;
    return 0;
}

Intrare:

Ana Ionescu

Afisare:

Ana Ionescu

Atentie

dest trebuie sa aiba spatiu suficient pentru ambele siruri impreuna. strcat nu verifica dimensiunea — daca dest este prea mic, comportamentul este nedefinit.