Documente Academic
Documente Profesional
Documente Cultură
Aplicatii
Siruri de caractere in
C++
Siruri de caractere in C+
+
Definitie.Mod de declarare
Citirea unui sir de caractere
Afisarea unui sir de caractere
Functii specifice
Strlen
Strcpy, strncpy
Strcat, strncat
Strcmp, stricmp, strncmp,strnicmp
Aplicatii
Siruri de caractere in C++.
Definitie
Definitie 1: Un tablou unidimensional(vector) care are elemente definite de tip
char formeaza un sir de caractere.
Declarare:
char nume_sir[dimensiune];
Exemplu:
char s[10];
char vocale[6]=“aeiou”;
char s1[]=“Test”;
unde:
• Sirul s poate memora maxim 9 caractere, are alocati 10 octeti, un caracter
este utilizat de caracterul NULL sau ‘\0’;
Definitii gresite:
char s1[];
char s2[0];
char s3[5]=“informatica”;
unde:
• s1,s2 sunt doua siruri de caractere de lungime 0 (se aloca 0 octeti )
• s3 poate memeora maxim 4 caractere dar se initializeza cu 11
Siruri de caractere in C++.
Definitie
Vizualizarea unui sir de caractere:
Exemplu 1: Fie declaratia char s[11]=“INFORMATICA”;
s: I N F O R M A T I C A \0
0 1 2 3 4 5 6 7 8 9 10 11
Concluzii:
. Pentru memorarea unui sir de caractere compilatorul retine doar adresa de inceput
primului caracter, adresa elementului din pozitia 0.
. Compilatorul adauga in mod automat dupa ultimul caracter din sir, caracterul Null \0
. Un sir de caractere este identificat in mod unic prin adresa de inceput a sirului si
rimul caracter \0 gasit printre octetii urmatori primului caracter.
Citirea unui sir de caractere
Varianta 1:
#include<iostream.h>
char s[100];
void main()
{ cout<<“Dati sirul:”;
cin>>s;
}
#include<iostream.h>
char s[100];
void main()
{ cout<<“Dati sirul:”;
cin.get(s,100);
cin.get();
}
Explicatii:
Se poate utiliza si fara parametri, iar in acest caz va utiliza o zona intermediara de
memore numita buffer, pentru a elimina din sirul dat la intrare caracterele care nu
se doresc a fi citite.
Exemplu: fie urmatoarea secventa:
char s[50];
cin.get(s,50,’*’);
cin.get();
Daca de la tastatura se introduce textul :”Examen*de*Bacalaureat” efectul acestei
secvente va fi urmatorul:
- sirul s va contine sirul “Examen”, deci s-au citit caractere pana la prima
aparitie a caracterului ‘*’ din text, restul, adica sirul “*de*Bacalaureat” se vor
sterge din buffer-ul de intrare.
Afisarea unui sir de
caractere
Varianta 1
Functii specifice
1.LUNGIMEA UNUI SIR DE CARACTERE
Exemplu:
char s[20]=“INFORMATICA”
s: I N F O R M A T I C A \0
cout<<strlen(s)<<endl;
0 1 2 3 4 5 6 7 8 9 10 11
cout<<strlen(s+0);
Va afisa: 11
11 s+0
cout<<strlen(s+3); s: I N F O R M A T I C A \0
Va afisa : 8 0 1 2 3 4 5 6 7 8 9 10 11
s+3
Functii specifice
2.COPIEREA SIRURILOR DE CARACTERE
Observatie: daca valoarea lui n este mai mare decat sirul s, atunci vor fi copiate
toate caractele din s inclusiv ‘\0’.
Functii specifice
Exemplu 1 STRCPY:
#include<iostream.h>
#include<string.h>
void main()
{ char a[100]=“crocodil”,b[100]=“hipopotam”;
strcpy(a,b);
cout<<“sirul a: ”<<a<<endl; //hipopotam
cout<<“sirul b: ”<<b<<endl; //hipopotam
}
Exemplu 2 STRNCPY:
#include<iostream.h>
#include<string.h>
void main()
{ char a[100]=“crocodil”,b[100]=“hipopotam”;
strncpy(a,b,4);
cout<<“sirul a: ”<<a<<endl; //hipo
cout<<“sirul b: ”<<b<<endl; //hipopotam
}
Functii specifice
3.CONCATENAREA SIRURILOR DE CARACTERE
Exemplu:
#include<string.h>
#include<stdio.h>
void main()
{ char a[100]=“MAMA”,b[100]=“ABRACADABRA”;
int k=strcmp(a,b);
if (k>0)
cout<<“a>b”; //afiseaza a>b, se compara lexicografic sirurile
else
if (k==0)
cout<<“a=b”;
else
cout<<“a<b”;
}
Functii specifice
4.COMPARAREA SIRURILOR DE CARACTERE
Functia STRDUP aloca in memorie spatiu pentru realizarea unei copii a lui s si
returneaza adresa gasita. Daca alocarea nu a reusit, reurneaza NULL.
Functii specifice
7. CAUTAREA UNUI CARACTER INTR-UN SIR DE CARACTERE
Functia STRUPR transforma toate literele mici din sirul s in litere mari. Functia va
returna un pointer la sirul s. Functia STRLWR are efectul invers functiei STRUPR.
• 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
# include <string.h>
void 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, …
}
}
Functii specifice
12. CAUTAREA UNEI SECVENTE DE CARACTERE CONSECUTIVE