Functii siruri de caractere



strlen(sir)

#include <iostream>
#include <cstring>

using namespace std;

int main()
{
   char sir[10];
   cin.get(sir, 10);
   cout<<strlen(sir);
   // se va afisa lungimea sirului, adica numarul de caractere citite
}



strcpy(sir_destinatie, sir_sursa)

#include <iostream>
#include <cstring>

using namespace std;

int main()
{
   char sir_sursa[10], sir_destinatie[10];
   cin.get(sir_sursa, 10);
   
   strcpy(sir_destinatie, sir_sursa);
   // copiaza sir_sursa in sir_destinatie

   cout<<sir_destinatie;
   // se va afisa acelasi sir cu cel memorat in sir_sursa
}



strncpy(sir_destinatie, sir_sursa, nr_caractere)

#include <iostream>
#include <cstring>

using namespace std;

int main()
{
   char sir_destinatie[15]="ana are mere";
   char sir_sursa[15]="ionel";
   
   strncpy(sir_destinatie, sir_sursa, 3);

   cout<<sir_destinatie;
   // se vor copia primele 3 caractere din sir_sursa
   // pe primele 3 locuri din sir_destinatie
   // se afiseaza: ion are mere
}



strcat(sir_destinatie, sir_sursa)

#include <iostream>
#include <cstring>

using namespace std;

int main()
{
   // aceasta functie are rolul de a concatena(adauga)
   // la sir_destinatie pe sir_sursa

   char sir_destinatie[15]="ana ";
   char sir_sursa[15]="are mere";
   
   strcat(sir_destinatie, sir_sursa);

   cout<<sir_destinatie;

   // se va afisa: ana are mere
}



strchr(sir, caracter)

#include <iostream>
#include <cstring>

using namespace std;

int main()
{
   char sir[15], caracter;
   cin.get(sir, 15);
   // deoarece cu functia cin.get() se citeste pana la '\n'
   // este nevoie sa mai apelam inca o data functia cin.get()
   // pentru a scapa din buffer de '\n', si a citi corect mai departe
   cin.get();
   cin>>caracter;
   cout<<strchr(sir, caracter);
}
/*
   daca sirul nostru este "informatica", iar caracterul este 'm'
   functia va returna sirul care incepe cu caracterul 'm', adica
   "matica"
   
   in cazul in care in sir nu se gaseste caracterul,
   functia va returna NULL
*/



strstr(sir1, sir2)

#include <iostream>
#include <cstring>

using namespace std;

int main()
{
   // are rolul de a cauta sir2 in sir 1
   // si de a returna subsirul din sir1
   // care incepe cu sir2
   char sir1[15], sir2[15];
   cin.get(sir1, 15);
   cin.get();
   cin.get(sir2, 15);
   cout<<strstr(sir1, sir2);
}
/*
   daca sir1 este "ana are mere", iar sir2 este "are"
   se va returna si afisa "are mere"
*/



strcmp(sir1, sir2)

#include <iostream>
#include <cstring>

using namespace std;

int main()
{
   // are rolul de a returna o valoare strict negativa daca sir1 este
   // inaintea lui sir2, o valoare strict pozitiva daca sir1 este dupa sir2
   // sau 0 daca sunt egale
   char sir1[15], sir2[15];
   cin.get(sir1, 15);
   cin.get();
   cin.get(sir2, 15);
   if(strcmp(sir1, sir2)<0)
      cout<<"sir1 este lexicografic inaintea lui sir2";
   else
      if(strcmp(sir1, sir2)>0)
         cout<<"sir1 este lexicografic dupa sir2";
      else // in caz ca sun egale functia returneaza 0
         cout<<"cele doua siruri sunt egale";
}
/*
   daca sir1 este "abcd", iar sir2 este "acbb" atunci
   apelul strcmp(sir1, sir2) va returna o valoare negativa;

   compararea are loc caracter cu caracter, iar in cazul in care
   sir1 este "ab", iar sir2 este "aba", sir1 va fi inaintea lui sir2
*/