ȘIRURI DE CARACTERE/ VECTORI DE CARACTEREinformatik.ddbuftea.ro/lectie siruri de char.pdf ·...

Post on 05-Jan-2020

22 views 2 download

Transcript of ȘIRURI DE CARACTERE/ VECTORI DE CARACTEREinformatik.ddbuftea.ro/lectie siruri de char.pdf ·...

• Sirurile de caractere sunt de fapt tablouri unidimensionale (sau vectori) ce memoreaza valori de tip caracter, • au ca ultim element un terminator de sir, caracterul null ( ‘ \0 ’ )• Fiecare litera ocupa un octet

• Se declara char sir[50]; // se aloca spatiu de memorie de maxim 50 caractere

ȘIRURI DE CARACTERE/ VECTORI DE CARACTERE

char sir[11]=”calculator”; // (O constanta de tip sir de caractere de declara intre doua caractere “ ”)

char sir[ ]=”calculator”; // (compilatorul face calculul numarului de octeti necesari)

char sir[100]=”calculator”; // (s-au rezervat mai multi octeti decat era necesar)

char sir[5] = {’a’, ’b’, ’c’, ’d’, ’\0’}; // sir de caractere cu elementele abcd sau tablou de caractere)

char v [13] ={ ‘c’, ’l’, ’a’, ’s’, ’a’,' ','a',' ','X','I','-',‘a'}; // tablou de caractere initializat cu valoarea : clasa a XI-a

char t[13] = {’c’, ’l’, ’a’, ’s’, ’a’,' ','a',' ','X','I','-',‘a','\0'}; // sirul de caractere : clasa a XI-a

char sir[13] = ”clasa a XI-a”; //echivalent cu sirul v si t

char sir [ ] = ”clasa a XI-a”; //echivalent cu sirul v si t

Un şir de caractere poate fi iniţializat la declarare astfel:

c l a s a a x I - a \0

1 2 3 4 5 6 7 8 9 10 11 12 13

sir

• Fiecare componenta a sirului (incepand cu cea de indice 0) retine codul ASCII al caracterului pe care il memoreaza.

• Conventia este ca ultimul octet sa retina 0 (codul caracterului nul).

• Caracterul nul este memorat automat.

• Trebuie rezervate lungimea_sirului+1 caractere char (+1 pentru caracterul nul).

Se memoreaza de 5 ori cate un caracter

2. Se poate memora un sir folosind cin>> nume_sir

Caracterul nul este adaugat automat.

Dezavantajul este ca in acest fel nu se pot citi siruri care contin mai multe cuvinte separate prin spatii.

Citirea sirului se sfarseste la intalnirea primului caracter blank.

daca se memoreaza sirul initializat “ora de

informatica”, variabila sir va retine numai “clasa”.

Pentru citirea paragrafelor avem functia cin.get() , inclusa in biblioteca string.h.

#include <string.h>int main(){char sir[20], c_end; int nrchar;

cin.get(sir, nrchar, c_end);cin.get();cout<<sir;}

Functia cin.get citeste un sir de caractere pana cand au fost citite nrchar-1 caractere sau pana s-a intalnit caracterul c_end. Parametrul c_end poate lipsi. Implicit acesta este ’\n’ (new line).Pot fi citite si caracterele albe, caracterul nul este inserat automat iar caracterul transmis ca ultim parametru nu este

inserat in sir.

3. Se poate folosi o functie speciala cin.get()

Exemple:

char sir[20]="informatica în C++";

cin.get(sir,5,’r’); //variabila sir va retine “info”

cin.get(sir,17,’ ’); //variabila sir va retine “informatica”

cin.get(sir, 15 , ’o’); //variabila sir va retine “inf” deoarece s-a intalnit caracterul 'o' pe a patra pozitie in sir

cin.get(sir,15); //variabila a va retine “informatica”

i n f o r m a t i c a î n C + +

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20Sir[20]

OBS: daca se citesc mai multe siruri, trebuie sa punem functia cin.get(); dupa fiecare memorare sir

Codul ASCII pentru caractereCodul ASCII

pentru literelemari si mici

Caractereleconvertite in numeric iau

valori de la 65 pana la 122

Sa se afiseze media elevului daca se cunosc doua note

1 Functia strlen( ) Are rolul de a returna lungimea unui şir(fără a lua în considerare caracterul nul).

1. Forma generală : strlen(nume sir);2. Exemplu: Se citește un şir de caractere şi se afișează numărul de caractere a șirului

Principalele funcții de prelucrare a șirurilor de caractere (#include<cstring>)

1. Tema : deschideti http://www.cplusplus.com/reference/ si cautati in bibioteca CSTRING care sunt functiile si cereturneaza acestea (ce exemple sunt)?

Se citeste o fraza si o silaba din doua litere. Sa se afiseze de cate ori apare silaba in text

Stergerea unei litere

a d n a

0 1 2 3 4 .. 99

s

a d i n a

0 1 2 3 4 ..

99

s

n a

0 1 2 3 4 .. 99

t

X=2

Sirul “sursa” se adauga la sirul str

Functia PUTS() de afisare in biblioteca STDIO.H

echivalent cu printf din biblioteca STDIO.H

printf ("found at %d\n",pch-str+1);

Se declara un pointer * pch pentru a afla pozitia in vectorul de char

11. Functia spn ( ) Forma generală: strspn(s1,s2)Funcția returnează numărul caracterelor din șirul s1 care se găsesc în șirul s2

#include#include#include

using namespace std; int main(){ int a;

char s1[100],s2[100]; cout<<"tasteaza o fraza: "; cin.get(s1,100); cin.get(); cout<<"tasteaza o fraza: "; cin.get(s2,100);cin.get();a=strspn(s1,s2);

cout<<a;return 0;}