Funcții predefinite
pentru prelucrarea rapidă a șirurilor de caractere
Lungimea unui șir de caractere: STRLEN
int strlen (char *s)
Returnează numărul de caractere a şirului care începe la adresa s (primită ca parametru), fără a număra caracterul '\0'.Copierea unui sir de caractere: STRCPY, STRNCPY
char * strcpy (char *d, char *s) sau char * strncpy (char *d, char *s, unsigned n)
Funcţia strcpy copie peste şirul d, şirul s. Copierea se va încheia după copierea caracterului '\0' din şirul s. Funcţia returnează adresa d.
Funcţia strncpy copie n caractere din şirul s peste şirul d. În cazul în care numărul de caractere a şirului s este mai mic decât n, se va copia şi caracterul '\0' a şirului s. Funcţia returnează adresa d.
Concatenarea sirurilor de caractere: STRCAT, STRNCAT
char * strcat (char *d, char *s)
char * strncat (char *d, char *s, unsigned n)
Funcţia strcat concatenează la şirul d o copie a şirului s, după care adaugă '\0'. Funcţia returnează adresa d.
Funcţia strncat concatenează n caractere din şirul s la şirul d. În cazul în care numărul de caractere a şirului s este mai mic decât n, se vor concatena doar strlen (s) caractere şi caracterul '\0' a şirului s. Funcţia returnează adresa d.
Compararea sirurilor de caractere: STRCMP
int * strcmp (char *s1, char *s2)
int * stricmp (char *s1, char *s2)
int * strncmp (char *s1, char *s2, unsigned n)
int * strnicmp (char *s1, char *s2, unsigned n)
Funcţia strcmp compară lexicografic şirurile s1 şi s2. Rezultatul funcţiei va fi:
- un întreg < 0 dacă s1<s2,
- un întreg >0 dacă s1>s2,
- 0 dacă s1 şi s2 sunt identice.
Funcţia stricmp este asemănătoare cu strcmp, diferenţa constă în faptul că nu se face diferenţa dintre litere mici şi litere mari.
Funcţia strncmp este asemănătoare cu strcmp, diferenţa constă în faptul că se vor compara doar primele n caractere ale şirurilor s1 şi s2.
Funcţia strnicmp este asemănătoare cu strncmp, diferenţa constă în faptul că nu se face diferenţa dintre litere mici şi litere mari.
Inversarea sirurilor de caractere: STRREV
Funcţia strrev inversează şirul s şi returnează adresa şirul inversat.
Duplicarea unui sir de caractere STRDUP
char * strdup (char *s)
Funcţia strdup caută o locaţie de memorie unde poate să memoreze un duplicat al lui s. În caz de succes se va returna adresa găsită. Altfel se returnează NULL
Căutarea unui caracter într-un şir: STRCHR, STRRCHR
char * strchr (char *s, char c)
char * strrchr (char *s, char c)
Funcţia strchr caută caracterul c în şirul s. Căutarea se face de la stânga la dreapta. În cazul în care caracterul c este găsit, căutarea se încheie şi funcţia returnează adresa din şirul s unde a fost găsit c. În cazul în care caracterul c nu este găsit, funcţia returnează adresa 0 (NULL).
Funcţia strrchr se deosebeşte de strchr prin faptul că va căuta caracterul c de la dreapta la stânga.
Cautarea unui subsir intr-un sir: STRSTR
char * strstr (char *s1, char *s2)
Funcţia strstr caută prima apariţie a şirului s2 în şirul s1. Căutarea se face de la stânga la dreapta. În cazul în care şirul s2 este găsit se va returna adresa din s1 unde începe s2. Altfel se returnează NULL.
Transformarea literelor mari in litere mici si invers: STRUPR, STRLWR
char * strupr (char *s)
char * strlwr (char *s)
Funcţia strupr transformă literele mici din şirul s în litere mari. Funcţia returnează un pointer la şirul s.
Funcţia strlwr transformă literele mari din şirul s în litere mici. Funcţia returnează un pointer la şirul s.
Inlocuirea caracterelor unui sir: STRSET, STRNSET
char * strset (char *s, char c)
char * strnset (char *s, char c, unsigned n)
Funcţia strset înlocuieşte toate caracterele din şirul s cu caracterul c. Returnează un pointer la s.
Funcţia strnset înlocuieşte primele n caractere din şirul s cu caracterul c. Returnează un pointer la s.
Despartirea unui sir in subsiruri: STRTOK
char * strtok (char *s, char *d)
Funcţia strtok este utilizată pentru a delimita unul sau mai multe subşiruri din şirul s, în funcţie de anumite caractere separator, memorate în şirul d.
Primul apel al funcţiei strtok:
- returnează un pointer către primul caracter din primul subşir al lui s care este format doar din caractere consecutive ce nu aparţin lui d.
- plasează în şirul s un caracter '\0' imediat după ultimul caracter al subşirului găsit.
- în cazul în care nu poate fi delimitat un subşir cu proprietatea cerută, funcţia returnează NULL.
Următoarele apeluri ale funcţii strtok utilizând NULL ca prim parametru
- continuă delimitarea unui subşir, căutând de la adresa imediat următoare caracterului "\0" plasat de apelul precedent.
- funcţia returnează un pointer către adresa subşirului astfel delimitat sau NULL dacă nu mai există subşiruri.
- După fiecare subşir delimitat, funcţia plasează "\0".
Forma generala de separare a unui şir s în subşiruri, în funcţie de anumite caractere separator memorate în şirul d:
# include <string>
using namespace std;
int main ()
{
char s[200]; // şirul care va fi despărţit
char d[]=",. "; // şirul care conţine separatorii
char *p; // pointer căruia i se va atribui adresa subşirurilor găsite
cin.get (s, 200);p= strtok (s,d); // primul apel
while (p)
{
cout << endl << p; // prelucrarea subşirurilor găsite
p=strtok (NULL, d); // apelurile 2, 3, ...
}
return 0;
}
strspn şi strcspn
int strspn (char *s, char *d)
int strcspn (char *s, char *d)
Funcţia returnează adresa din s a primului caracter din s care aparţine lui d sau NULL dacă nici un caracter din s nu aparţine lui d.
Functii de conversie a sirurilor: ATOI, ATOL, ATOF, ITOA, LTOA
int * atoi (char *s)
long * atol (char *s)
float * atof (char *s)
char * itoa (int nr, char *s, int baza)
char * ltoa (long nr, char *s, int baza)
atoi converteşte şirul s în int şi returnează numărul rezultat. Conversia se opreşte la întâlnirea primului caracter nenumeric. În cazul în care şirul nu începe cu caractere numerice se va returna 0.
atol converteşte şirul s în long şi returnează numărul rezultat. Conversia se opreşte la întâlnirea primului caracter nenumeric. În cazul în care şirul nu începe cu caractere numerice se va returna 0.
atof converteşte şirul s în float şi returnează numărul rezultat. Conversia se opreşte la întâlnirea primului caracter care nu este număr şi diferit de ".". În cazul în care şirul nu începe cu caractere numerice sau cu "."se va returna 0.
itoa converteşte int - ul nr în şir şi îl memorează în s. Pentru conversie se va utiliza baza specificată de cel de-al 3-lea parametru. Funcţia returnează adresa şirului s.
ltoa converteşte long - ul nr în şir şi îl memorează în s. Pentru conversie se va utiliza baza specificată de cel de-al 3-lea parametru. Funcţia returnează adresa şirului s.