Funcții pentru Prelucrarea a Două Șiruri de Caractere sau a unui Șir și unui Caracter din Biblioteca 5
1. Introducere
Biblioteca <cstring> oferă funcții utile pentru manipularea șirurilor de caractere în stil C. Aceste funcții permit copierea, concatenarea, compararea, găsirea unui subșir sau a unui caracter în cadrul unui șir.
2. Funcții pentru două șiruri de caractere
Funcție | Descriere | Exemplu |
strcmp(sir1, sir2) | Compară lexicografic două șiruri (returnează 0 dacă sunt egale, <0 dacă sir1 < sir2, >0 dacă sir1 > sir2). | strcmp(„abc”, „abd”) -> -1 |
strncmp(sir1, sir2, n) | Compară primii n caractere ale șirurilor. | strncmp(„abc”, „abd”, 2) -> 0 |
strcpy(dest, src) | Copiază conținutul lui src în dest. | strcpy(dest, „Hello”) |
strncpy(dest, src, n) | Copiază primii n caractere din src în dest. | strncpy(dest, „Hello”, 3) |
strcat(dest, src) | Concatenează src la sfârșitul lui dest. | strcat(dest, ” world!”) |
strncat(dest, src, n) | Concatenează primii n caractere din src la dest. | strncat(dest, ” world!”, 6) |
strstr(sir1, sir2) | Găsește primul șir sir2 în sir1 (returnează pointer la prima apariție sau NULL). | strstr(„Hello world”, „world”) |
3. Funcții pentru șiruri și un caracter
Funcție | Descriere | Exemplu |
strchr(sir, c) | Găsește prima apariție a caracterului c în șirul sir. | strchr(„Hello”, ‘e’) -> pointer la ‘e’ |
strrchr(sir, c) | Găsește ultima apariție a caracterului c în șirul sir. | strrchr(„Hello”, ‘l’) -> pointer la ultimul ‘l’ |
strspn(sir1, sir2) | Returnează lungimea secvenței inițiale din sir1 formată doar din caractere din sir2. | strspn(„abc123”, „abc”) -> 3 |
strcspn(sir1, sir2) | Returnează lungimea secvenței inițiale din sir1 care nu conține caractere din sir2. | strcspn(„abc123”, „123”) -> 3 |
4. Exemple practice
Exemplu 1: Compararea a două șiruri
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char sir1[] = „abc”;
char sir2[] = „abd”;
int rezultat = strcmp(sir1, sir2);
if (rezultat == 0) {
cout << „Sirurile sunt egale.” << endl;
} else if (rezultat < 0) {
cout << „\”” << sir1 << „\” este mai mic lexicografic decât \”” << sir2 << „\”” << endl;
} else {
cout << „\”” << sir1 << „\” este mai mare lexicografic decât \”” << sir2 << „\”” << endl;
}
return 0;
}
Exemplu 2: Găsirea unui subșir într-un alt șir
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char sir[] = „Salut lume!”;
char subSir[] = „lume”;
char* pozitie = strstr(sir, subSir);
if (pozitie) {
cout << „Subsirul \”” << subSir << „\” începe la poziția: ” << (pozitie – sir) << endl;
} else {
cout << „Subsirul \”” << subSir << „\” nu a fost găsit.” << endl;
}
return 0;
}
Exemplu 3: Găsirea unui caracter într-un șir
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char sir[] = „Programare C++”;
char* pozitie = strchr(sir, ‘a’);
if (pozitie) {
cout << „Prima aparitie a caracterului ‘a’ este la pozitia: ” << (pozitie – sir) << endl;
} else {
cout << „Caracterul ‘a’ nu a fost găsit.” << endl;
}
return 0;
}
Exemplu 4: Concatenează două șiruri
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char sir1[50] = „Salut”;
char sir2[] = ” lume!”;
strcat(sir1, sir2);
cout << „Rezultatul concatenarii: ” << sir1 << endl;
return 0;
}
Exemplu 5: Calcularea lungimii unei secvențe
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char sir[] = „123abc456”;
char caractere[] = „123”;
int lungime = strspn(sir, caractere);
cout << „Lungimea secvenței inițiale formate doar din caracterele ‘123’ este: ” << lungime << endl;
return 0;
}
5. Activități practice pentru elevi
- Scrieți un program care verifică dacă un șir conține un anumit caracter.
- Realizați un program care înlocuiește toate aparițiile unui subșir într-un șir cu alt subșir.
- Implementați un program care elimină toate caracterele dintr-un șir care nu apar într-un alt șir dat.
6. Scheme logice
- Compararea șirurilor:
- Start -> Citire șiruri -> Aplicare strcmp -> Afișare rezultat -> Stop.
- Căutarea unui caracter:
- Start -> Citire șir și caracter -> Aplicare strchr -> Verificare rezultat -> Stop.
- Concatenează șiruri:
- Start -> Citire șiruri -> Aplicare strcat -> Afișare rezultat -> Stop.
7. Concluzie:
- Funcțiile din <cstring> sunt esențiale pentru prelucrarea șirurilor și caracterelor în stil C.
- Ele oferă metode eficiente pentru operații de bază precum copierea, concatenarea și căutarea.
- Practica este esențială pentru a înțelege utilizarea corectă a acestor funcții.