Functii pentru caractere si functii pentru siruri de caractere
Funcii pentru caractere (ctype.h)
10/30/[email protected]
Mulimea caracterelor
10/30/[email protected]
un caracter are tipul char litere (mici i mari din alfabetul englez) cifre (de la 0 la 9) caractere de spaiere (spatiu, tab, enter, etc.) caractere speciale ( [ { \ # ~ | % ^ ? etc.) alte caractere ( @ ` $ etc.)
un ir de caractere are tipul char[] sau char* o secven de caractere scrise ntre ghilimele
Caractere i codul ASCII
10/30/[email protected]
#include #include int main(){
int i; char t[] = "Limbajul C";for(i=0; t[i] != 0; ++i)
printf("%c => %i\n",t[i],t[i]);system("pause");
}http://ro.wikipedia.org/wiki/ASCII
L => 76i => 105m => 109b => 98a => 97j => 106u => 117l => 108=> 32
C => 67
Exemplu
10/30/[email protected]
Program C care citete un ir de caractere t citete un caracter x citete un caracter y nlocuiete n t apariiile lui x cu y.
pentru t = Limbajul C are functii, x = C i y = B se afieaz: Limbajul B are functii.
Funcii pentru clasificarea caracterelor
10/30/[email protected]
sunt definite n biblioteca ctype.h au denumiri de forma isXYZ XYZ este numele clasei de caractere: lower, upper,
digit, etc. au un singur parametru de tip char rezultatul este adevrat dac parametrul face
parte din clasa XYZ a funciei exemplu: islower('-'), islower('1'), islower('A') fals islower('x') adevrat
Funcii pentru clasificarea caracterelor
10/30/[email protected]
int isalpha (int c) testeaz dac c este o liter 'A', 'b', 'z' adevrat; '!', '@', '-' fals
int islower (int c) testeaz dac c este o minuscul 'a', 'q', 's' adevrat; 'A', ')', '@' false
int isupper (int c) testeaz dac c este o majuscul 'A', 'Q', 'S' adevrat; 'a', ')', '@' false
Funcii pentru clasificarea caracterelor
10/30/[email protected]
int isdigit (int c) testeaz dac c este o cifr n baza 10 '0', '4', '9' adevrat; 'A', 'X', '-' fals
int isxdigit (int c) testeaz dac c este o cifr n baza 16 '0', '4', 'A', 'f' adevrat; 'g', 'X', '-' fals
int isalnum (int c) testeaz dac c este liter sau cifr n baza 10 '0', '4', 'A', 'q' adevrat; '@', '!', '.' fals
Funcii pentru clasificarea caracterelor
10/30/[email protected]
int isblank (int c) testeaz dac c este caracter spaiu sau tab ' ', '\t' adevrat; '_', '.', 'a' fals
int isspace (int c) testeaz dac c este caracter de spaiere ' ', '\t', '\n' adevrat; '_', '.', 'a' fals
int ispunct (int c) testeaz dac c este caracter de punctuaie ',', '.', '!' adevrat; 'a', 'Q' fals
alte funcii: isprint, iscntrl, isgraph, etc
Exerciiu
10/30/[email protected]
program C care afieaz statistici despre un ir de caractere: numrul de caractere numrul de litere numrul de cifre
pentru: Limbajul C are multe functii. se afieaz: Textul contine 29 caractere din care 24 litere si 0
cifre.
Funcii pentru conversia caracterelor
10/30/[email protected]
sunt definite n biblioteca ctype.h au denumiri de forma toXYZ XYZ este numele clasei de caractere: lower, upper
au un singur parametru de tip char rezultatul este forma modificat a parametrului
(conform clasei XYZ) exemplu: tolower('A') a tolower('*') *
Funcii pentru conversia caracterelor
10/30/[email protected]
int tolower (int c) testeaz dac c este majuscul i returneaz
minuscula corespunztoare 'A' 'a', 'b' 'b', '+' '+'
int toupper (int c) testeaz dac c este minuscul i returneaz
majuscula corespunztoare 'a' 'A', 'B' 'B', '+' '+'
Exerciiu
10/30/[email protected]
Program C care citete un ir de caractere i l transform astfel: prima liter devine majuscul prima liter de dup fiecare spaiu sau semn de
punctuaie devine majuscul restul literelor devin minuscule pentru: Limbajul C are functii. chiar si pentru caractere. se afieaz: Limbajul C Are Functii. Chiar Si Pentru Caractere.
Funcii pentru iruri de caractere
10/30/[email protected]
Funcii pentru iruri de caractere
10/30/[email protected]
sunt definite n biblioteca string.h au denumiri de forma strXYZ XYZ este numele o abreviere a rolului funciei
primul parametrul este de tipul char* char* este similar cu char[], dar variabile de tip
char* pot s fie modificate (char *t; t = Salut) rezultatul este n general char* exemplu: strlwr(ABC) abc strlen(ABC) 3
Funcii pentru iruri de caractere
10/30/[email protected]
int strlen(char *sir) calculeaz lungimea irului de caractere strlen(Limbajul C) 10
char* strlwr(char *sir) transform majusculele n minuscule strlwr(Ab2) ab2
char* strupr(char *sir) transform minuscule n majusculele strupr(Ab2) AB2
char* strrev(char *sir) inverseaz irul (va fi scris de la coada la cap) strrev(Ab2) 2bA
Exemplu
10/30/[email protected]
Program C care citete de la tastatur un ir de caractere, l inverseaz i afiseaz rezultatul.
pentru: Limbajul C are functii. afieaz: .iitcnuf era C lujabmiL
Funcii pentru cutare n iruri de caractere
10/30/[email protected]
rezultatul este subirul unde a fost gsit ce se caut sau NULL dac nu a fost gsit char* strchr(char *src, int c) caut prima apariie n irul src a caracterului c strchr(Programare, a) amare
char* strrchr(char *src, int c) caut ultima apariie n irul src a caracterului c strrchr(Programare, a) are
char* strstr(char *src, char *sub) caut prima apariie n irul src a subirului sub strstr(Programare, ac) NULL
Exemplu
10/30/[email protected]
Program C care citete un text X citete un text Y spune dac Y apare n interiorul lui X
pentru: X = Limbajul C are functii. i Y = are afieaz Textul are a fost gasit.
Funcii pentru compararea irurilorde caractere
10/30/[email protected]
Rezultatul este 0 dac irurile src1 i src2 sunt egale negativ dac src1 este mai mic dect src2 pozitiv dac src1 este mai mare dect src2 Majusculele sunt considerate mai mici dect minusculele.
i = ignor diferenele ntre majuscule i minuscule n = compar doar primele n caractere
Funcii pentru compararea irurilorde caractere
10/30/[email protected]
int strcmp(char *src1, char *src2) strcmp(AC, ab) -1
int stricmp(char *src1, char *src2) stricmp(AC, ab) 1
int strncmp(char *src1, char *src2, int n) strncmp(AC, ab, 1) -1
int strnicmp(char *src1, char *src2, int n) strnicmp(AC, ab, 1) 0
Exemplu
10/30/[email protected]
Program C care citete dou iruri de caractere X i Y irul mai mic este transformat n minuscule irul mai mare este transformat n majuscule dac irurile sunt identice, nici unul nu se modific pentru X = Limbajul C, Y = Programarea
calculatoarelor afieaz: X = limbajul c Y = PROGRAMAREA CALCULATOARELOR
Funcii pentru setarea irurilor de caractere
10/30/[email protected]
char* strset(char *dest, int c) scrie caracterul c n fiecare poziie din irul dest char t[] = Limbajul C;
strset(t, x); t devine xxxxxxxxxx char* strnset(char *dest, int c, int n) scrie caracterul c n fiecare poziie din irul dest de
cel mult n ori char t[] = Limbajul C;
strnset(t, x, 5); t devine xxxxxjul C
Exemplu
10/30/[email protected]
Program C care citete un ir de caractere X citete un ir de caractere Y nlocuiete prima apariie a lui X n Y cu plusuri i
afieaz rezultatul pentru X = aj i Y = Limbajul C afieaz Limb++ul C
Funcii pentru copierea irurilor de caractere
10/30/[email protected]
char* strcpy(char *dest, char *src) copiaz irul src n irul dest char t[100];
strcpy(t, Limbajul C); t devine Limbajul C char* strncpy(char *dest, char *src, int n) copiaz cel mult n caractered din irul src n irul
dest char t[100];
strncpy(t, Limbajul C, 5); t devine Limba
Funcii pentru unirea irurilor de caractere
10/30/[email protected]
char* strcat(char *dest, char *src) adaug irul src la sfritul irului dest char t[100] = Limbajul;
strcat(t, C); t devine Limbajul C char* strncat(char *dest, char *src, int n) adaug cel mult n caractere din irul src la sfritul irului dest char t[100] = Limbajul;
strncat(t, C++, 2); t devine Limbajul C
Exemplu
10/30/[email protected]
Program C care citete un ir de caractere X afieaz Mesajul X citit pe dos este Y Y este inversul lui X
repet operaiile pn cnd X i Y sunt egale
Sirul X:Limbaj Limbaj citit de dos este jabmiL Sirul X:carte carte citit de dos este etrac Sirul X:ana ana citit de dos este ana
Top Related