Sunteți pe pagina 1din 11

Funcția strlen

Sintaxă

Parametrii: un șir de caractere (𝑠𝑡𝑟) a cărui lungime urmează a fi determinată.


Valoare returnată: lungimea șirului de caractere 𝑠𝑡𝑟.

Input Output
str = CPP Lungimea sirului str este: 3

str = Șir de caractere Lungimea sirului str este: 16

Mecanism
Lungimea șirului de caractere 𝑠𝑡𝑟 este determinată de poziția caracterului nul. Lungimea unui
șir de caractere include toate caracterele din șirul respectiv cuprinse între acestuia (poziția cu
indicele 0 a șirului, inclusiv) și caracterul nul (exclusiv).

Lungimea unui șir de caractere nu trebuie confundată cu mărimea vectorului în care este stocat
șirul de caractere:
De exemplu:

𝑠𝑡𝑟 este un vector care poate stoca 100 de caractere, dar lungimea șirului de caractere 𝑠𝑡𝑟 este
doar de 3 caractere.
Funcția determină lungimea șirului de caractere parcurgând șirul de caractere de la începutul
său (poziția cu indicele 0) până la întâlnirea caracterului nul.

Un model de implementare al funcției strlen este:

Complexitatea funcției strlen este 𝑂(𝑁) unde 𝑁 este lungimea șirului de caractere. Din
această cauză, dacă se dorește parcurgerea unui șir de caractere, este recomandată evitarea
instrucțiunilor de tipul:

În acest caz, funcția 𝑠𝑡𝑟𝑙𝑒𝑛 este apelată de fiecare dată când este comparată variabila 𝑖 cu
lungimea șirului de caractere 𝑠𝑡𝑟. Așadar, la fiecare comparație se execută 𝑁 pași unde 𝑁 este
lungimea șirului de caractere.
În schimb, este recomandată stocarea valorii lungimi șirului de caractere într-o variabilă (pentru
a evita apelarea repetată a funcției s𝑡𝑟𝑙𝑒𝑛):

sau chiar parcurgerea șirului până la întâlnirea caracterului nul:


executându-se astfel un singur pas la fiecare comparație.

Funcția strcmp
Sintaxă

Parametrii: două șiruri de caractere care urmează a fi comparate (𝑠𝑡𝑟1 și 𝑠𝑡𝑟2).


Valoare returnată:
0: șirurile de caractere sunt identice
< 0: primul șir de caractere 𝑠𝑡𝑟1 este mai mic lexicografic decât al doilea șir de caractere 𝑠𝑡𝑟2
> 0: primul șir de caractere 𝑠𝑡𝑟1 este mai mare lexicografic decât al doilea șir de caractere
𝑠𝑡𝑟2
Input Output
str1 = abcdef str1 > str2
str2 = abcDef

str1 = abcdef str1 = str2


str2 = abcdef

str1 = abcd str1 < str2


str2 = abcdef

str1 = PPC str1 > str2


str2 = CPP

Mecanism
Compară lexicografic șirurile de caractere.

Un șir de caractere 𝐴 = 𝑎1 𝑎2 … 𝑎𝑛 este egal cu un șir de caractere 𝐵 = 𝑏1 𝑏2 … 𝑏𝑚 dacă și numai


dacă 𝑁 = 𝑀și 𝑎1 = 𝑏1, 𝑎2 = 𝑏2 , ..., 𝑎𝑁 = 𝑏𝑀 .
De exemplu:
𝐴 = “Ș𝑖𝑟𝑢𝑟𝑖 𝑑𝑒 𝑐𝑎𝑟𝑎𝑐𝑡𝑒𝑟𝑒” și 𝐵 = “Ș𝑖𝑟𝑢𝑟𝑖 𝑑𝑒 𝑐𝑎𝑟𝑎𝑐𝑡𝑒𝑟𝑒” (𝐴 = 𝐵)

Un șir de caractere 𝐴 = 𝑎1 𝑎2 … 𝑎𝑁 este mai mic decât un șir de caractere 𝐵 = 𝑏1 𝑏2 … 𝑏𝑀 dacă


și numai dacă:
 Există un indice 𝑖 (1 ≤ 𝑖 ≤ min(𝑁, 𝑀)) pentru care 𝑎1 = 𝑏1 , 𝑎2 = 𝑏2 , … , 𝑎𝑖−1 = 𝑏𝑖−1
și 𝑎𝑖 < 𝑏𝑖 .
 𝑁 < 𝑀 și 𝑎1 = 𝑏1 , 𝑎2 = 𝑏2 , … , 𝑎𝑁 = 𝑏𝑀
Exemple:
𝐴 = “Ș𝑖𝑟𝑢𝑟𝑖 𝑑𝑒 𝑐𝑎𝑟𝑎𝑐𝑡𝑒𝑟𝑒” și 𝐵 = “Ș𝑖𝑟𝑢𝑟𝑖 𝑑𝑒 𝑛𝑢𝑚𝑒𝑟𝑒” (𝐴 < 𝐵)
𝐴 = “Ș𝑖𝑟𝑢𝑟𝑖” și 𝐵 = “Ș𝑖𝑟𝑢𝑟𝑖 𝑑𝑒 𝑛𝑢𝑚𝑒𝑟𝑒” (𝐴 < 𝐵)

Analog pentru 𝐴 = 𝑎1 𝑎2 … 𝑎𝑛 > 𝐵 = 𝑏1 𝑏2 … 𝑏𝑚 .


Un model de implementare al funcției strcmp este:

Complexitatea funcției strcmp este 𝑂(𝑁 + 𝑀), unde 𝑁 și 𝑀 reprezintă lungimile celor două
șiruri de caractere (𝑠𝑡𝑟1 și 𝑠𝑡𝑟2). Se execută 𝑁 pași pentru determinarea lungimii șirului de
caractere 𝑠𝑡𝑟1, 𝑀 pași pentru determinarea lungimii șirului de caractere 𝑠𝑡𝑟2, min(𝑁, 𝑀)
pentru compararea celor două șiruri de caractere și încă un număr constant de instrucțiuni 𝐶.
În total se execută 𝑁 + 𝑀 + min(𝑁, 𝑀) + 𝐶 pași, de unde rezultă complexitatea algoritmului.

Funcția strcpy
Sintaxă

Parametrii: un șir de caractere 𝑑𝑒𝑠𝑡 și un șir de caractere 𝑠𝑟𝑐 care urmază a fi copiat în șirul
de caractere 𝑑𝑒𝑠𝑡.
Valoare returnată: după ce copiază șirul 𝑠𝑟𝑐 în șirul 𝑑𝑒𝑠𝑡, funcția returnează un pointer către
șirul de caractere 𝑑𝑒𝑠𝑡.
Input Output
src = CPP dest = CPP

Mecanism
Funcția copiază în totalitate șirul de caractere 𝑠𝑟𝑐 în șirul de caractere 𝑑𝑒𝑠𝑡. Verbul “a copia”
poate avea o latură înșelătoare, astfel efectul funcței poate fi înțeles în mod greșit ca o operație
de adăugare, lipire, concatenare.

După executarea acestei secvențe de instrucțiuni, șirul de caractere 𝑑𝑒𝑠𝑡 nu va fi


"𝐴𝐵𝐶𝐷𝐸𝐹𝐺𝐻𝑎𝑏𝑐𝑑𝑒𝑓𝑔ℎ” sau "𝑎𝑏𝑐𝑑𝑒𝑓𝑔ℎ𝐴𝐵𝐶𝐷𝐸𝐹𝐺𝐻", ci doar "𝑎𝑏𝑐𝑑𝑒𝑓𝑔ℎ".
Efectul funcției poate fi privit ca o operație de atribuire între două șiruri de caractere (𝑑𝑒𝑠𝑡 =
𝑠𝑟𝑐). Așadar, indiferent de conținutul inițial al șirului de caractere 𝑑𝑒𝑠𝑡, după executarea
funcției strcpy, șirul de caractere 𝑑𝑒𝑠𝑡 va avea același conținut ca cel al șirului de caractere
𝑠𝑟𝑐.

Un lucru important îl reprezintă dimensiunea vectorului în care este copiat șirul de caractere
𝑠𝑟𝑐. Dacă lungimea șirului de caractere 𝑠𝑟𝑐 este mai mare decât marimea vectorului 𝑑𝑒𝑠𝑡,
atunci pot apărea erori (depinde de mediul de programare utilizat, se poate să nu apară nicio
eroare).
Un model de implementare al funcției strcpy este:

Complexitatea funcției strcpy este 𝑂(𝑁) unde 𝑁 reprezintă lungimea șirului de caractere 𝑠𝑟𝑐,
complexitate care rezultă, în mod evident, din parcurgerea șirului de caractere 𝑠𝑟𝑐.

Funcția strcat
Sintaxă

Parametrii: un șir de caractere (𝑑𝑒𝑠𝑡) și un șir de caractere (𝑠𝑡𝑟) care urmează a fi adăugat la
sfârșitul șirului 𝑑𝑒𝑠𝑡.
Valoarea returnată: după ce șirul 𝑠𝑟𝑐 a fost adăugat la sfârșitul șirului 𝑑𝑒𝑠𝑡, funcția
returnează un pointer către șirul de caractere dest.

Input Output
dest = CPP dest = CPPcpp
src = cpp
Mecanism
Funcția adaugă în totalitate șirul de caractere 𝑠𝑟𝑐 la sfârșitul șirului de caractere 𝑑𝑒𝑠𝑡.
Această operație este cunoscută sub numele de concatenare.
Un lucru important îl reprezintă dimensiunea vectorului la care este adăugat șirul de caractere
𝑠𝑟𝑐. Dacă lungimea șirului de caractere 𝑠𝑟𝑐 este mai mare decât marimea vectorului 𝑑𝑒𝑠𝑡,
atunci pot apărea erori (depinde de mediul de programare utilizat, se poate să nu apară nicio
eroare).

Un model de implementare al funcției strcat este:


Complexitatea funcției strcat este 𝑂(𝑁 + 𝑀) unde 𝑁 și 𝑀 reprezintă lungimile celor două
șiruri de caractere. Sunt necesari 𝑁 pași pentru determinarea lungimii șirului de caractere 𝑑𝑒𝑠𝑡,
𝑀 pași pentru determinarea lungimii șirului de caractere 𝑠𝑟𝑐, 𝑀 pași pentru concatenarea celor
două șiruri și un număr constant de pași 𝐶. În total se execută N + 2M + C, de unde rezultă
complexitatea algoritmului.

Funcția strchr
Sintaxă

Parametrii: un șir de caractere (𝑠𝑡𝑟) și un număr întreg (𝑐) reprezentând codul ASCII al
caracterului care urmează a fi căutat (se poate transimte ca parametru și caracterul în sine,
conversia va avea loc automat).
Valoare returnată: în cazul în care caracterul căutat nu se găsește în șir, atunci este returnat
pointerul nul/ caracterul nul, altfel este returnat un pointer către prima poziție (de la stânga la
dreapta) la care apare caracterul căutat.
Input Output
str = Ana are mere si pere Caracterul nu exista in sir!
caracter = Q
str = Ana are mere si pere re mere si pere
caracter = r

Mecanism
Funcția caută în șirul de caractere 𝑠𝑡𝑟, de la stânga la dreapta, caracterul care are codul
ASCII 𝑐. În cazul în care caracterul a fost găsit, este returnat imediat un pointer către poziția
din șirul 𝑠𝑡𝑟 la care a fost găsit caracterul. Dacă a fost parcurs tot șirul și nu a fost returnat
nimic, atunci este returnat pointerul nul (caracterul nul) deoarece caracterul căutat nu se află
în șir.
Un model de implementare al funcției strchr este:

Atenție: în acest caz, caracterul nul nu reprezintă sfârșitul șirului (𝑠𝑡𝑟 + 𝑁, 𝑠𝑡𝑟[𝑁]) ci
pointerul nul.
Complexitatea funcției strchr este 𝑂(𝑁) unde 𝑁 este lungimea șirului de caractere 𝑠𝑡𝑟,
complexitate care rezultă, în mod evident, din parcurgerea șirului de caractere 𝑠𝑡𝑟.
Funcția strstr
Sintaxă

Mecanism

S-ar putea să vă placă și

  • Plumb PDF
    Plumb PDF
    Document2 pagini
    Plumb PDF
    Ursu Ianis Vlad
    Încă nu există evaluări
  • Luceafărul
    Luceafărul
    Document2 pagini
    Luceafărul
    Ursu Ianis Vlad
    Încă nu există evaluări
  • Din Ceas, Dedus
    Din Ceas, Dedus
    Document2 pagini
    Din Ceas, Dedus
    Ursu Ianis Vlad
    Încă nu există evaluări
  • Banane
    Banane
    Document1 pagină
    Banane
    Ursu Ianis Vlad
    Încă nu există evaluări
  • Bac C++
    Bac C++
    Document34 pagini
    Bac C++
    Ursu Ianis Vlad
    Încă nu există evaluări
  • Lucrare Bio
    Lucrare Bio
    Document6 pagini
    Lucrare Bio
    Ursu Ianis Vlad
    Încă nu există evaluări
  • Divide Et Impera
    Divide Et Impera
    Document2 pagini
    Divide Et Impera
    Ursu Ianis Vlad
    Încă nu există evaluări