Funcții pentru șiruri de caractere în C
Când lucrezi cu texte în programare, vei folosi frecvent funcții precum strlen pentru a afla lungimea unui șir. Funcția returnează numărul de caractere din șir, excluzând terminatorul null. Poți verifica ușor dacă un text depășește o anumită lungime:
if (strlen(cuvant) > 30) {
printf("Cuvantul este prea lung\n");
} else {
printf("Cuvantul are o lungime acceptabila\n");
}
Pentru a compara șiruri, folosim strcmp. Această funcție compară caracterele din două șiruri și returnează 0 dacă sunt identice, o valoare negativă dacă primul șir este "mai mic" lexicografic, sau o valoare pozitivă dacă primul e "mai mare".
💡 Sfat util: Funcția strcmp este case-sensitive, deci "Ana" și "ana" vor fi considerate șiruri diferite!
Pentru a copia un șir, avem strcpy (copiere completă) și strncpy (copiere parțială). Iată un exemplu de copiere a primelor 5 caractere dintr-un cuvânt:
strncpy(trunchiat, cuvant, 5);
trunchiat[5] = '\0'; // Nu uita să adaugi terminatorul null!
Când trebuie să cauți în șiruri, poți folosi:
- strchr pentru a găsi prima apariție a unui caracter
- strstr pentru a găsi un subșir într-un text
Pentru a uni două șiruri, funcția strcat este ideală:
strcat(sir1, sir2); // adaugă sir2 la sfârșitul lui sir1
Când ai nevoie să separi un text în "bucăți", folosește strtok cu un delimiter (de exemplu, spațiu pentru a separa cuvintele):
cuvant = strtok(propozitie, " ");
while (cuvant != NULL) {
printf("%s\n", cuvant);
cuvant = strtok(NULL, " ");
}
Pentru a inversa un șir, deși nu e o funcție standard în toate implementările C, poți scrie propriul algoritm simplu de inversare folosind două indici și interschimbări de caractere.