27
Functii pentru caractere si functii pentru siruri de caractere

Functii pentru caractere si functii pentru siruri de caractere

  • Upload
    abyutza

  • View
    462

  • Download
    1

Embed Size (px)

DESCRIPTION

Functii pentru caractere si functii pentru siruri de caractere

Citation preview

  • 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