Sunteți pe pagina 1din 7

1.

Declararea unui şir de caractere

# include<iostream>
# include<string.h>
int main()
{
char s[10]; //dim sir trebuie sa fie cel putin cu 1 mai mare decat
//lungimea efectiva a sirului, ultimul caracter fiind
// caracterul NULL (0 binar). In şirul se pot memora maxim 9
caractere
}

2. Iniţializarea unui şir de caractere

# include<iostream>
# include<string.h>
int main()
{
//Initializare la declarare
char s[10]="abc", s1[5]={'a','b','c'};

//Initializare in program
strcpy(s,"abc");

3. Declararea unui sir vid

s[0]=0; sau s[0]='\0'; sau s[0]=NULL; sau strcpy(s,NULL);

4. CITIREA UNUI ŞIR DE CARACTERE

4.1)
# include<iostream>
# include<string.h>

int main()
{

char s[5]; //dim sir trebuie sa fie cel putin cu 1 mai mare decat
//lungimea efectiva a sirului, ultimul caracter fiind
// caracterul NULL (0 binar)
cin>>s; //citeste pana la spatiu
cout<<s;
}

4.2)
# include<iostream>
# include<string.h>
# include<ctype.h>

int main()
{

char s[50];
cin.get(s,50); //citeste pana la ENTER, fara a extrage ENTER din buffer
// sau max 49 caractere
cout<<s;
}
4.3)
# include<iostream>
# include<string.h>
# include<ctype.h>

int main()
{

char ss[50],sd[50];
cin.get(ss,50); //citeste pana la ENTER, fara a extrage ENTER din buffer
cin.get(sd,50); // al doilea sir nu a mai fost citit
cout<<ss<<endl<<sd;
}

4.4)
# include<iostream>
# include<string.h>
# include<ctype.h>

int main()
{

char ss[50],sd[50],*p;
cin.get(ss,50); //citeste pana ENTER, fara a extrage ENTER din buffer
cin.get(); //extrage ENTER-ul tastat dupa primul sir si permite tastarea
celui
//de-al doilea sir
cin.get(sd,50);
cout<<ss<<endl<<sd;
}

4.5)
# include<iostream>
# include<string.h>
# include<ctype.h>

int main()
{

char ss[50],sd[50];
cin.getline(ss,50); //citeste pana la ENTER si extrage ENTER din buffer
cin.getline(sd,50);
cout<<ss<<endl<<sd;
}

5. Copierea unui şir (sursă) în alt şir (destinaţie)

strcpy(sir_destinatie, sir_sursa)
strncpy(sir_destinatie, sir_sursa,n) – copiaza primele n caractere din
sirul sursa in sirul destinatie

6. Concatenarea a două şiruri

strcat(sir_destinatie, sir_sursa) – se adaugă şirul_sursă la şfârşitul şirului


destinaţie
strncat(sir_destinatie, sir_sursa, n) –se adaugă doarprimele n caractere din
sirul sursa in sirul destinatie
7. Compararea a două şiruri

strcmp(şir1, şir2) returnează o valoare:


< 0 dacă şir1<şir2
>0 dacă şir1>şir2
=0 dacă şir1=şir2

stricmp(şir1, şir2) – se ignoră diferenţa dintre literele mici şi mari


strncmp(şir1, şir2,n) – se compară primele n caractere dintre cele 2 şiruri
strnicmp(şir1, şir2,n) – se ignoră diferenţa dintre literele mici şi mari
dibtre primele n caractere

8. Conversii

strupr(sir); transformă literele mici din şir în litere mari, celelalte


caractere rămânând neschimbate
strlwr(sir); transformă literele mari din şir în litere mici, celelalte
caractere rămânând neschimbate

char s[4]="abc";

strupr(s);
cout<<s; => ABC

FUNCTII DE CONVERSIE DIN SIR DE CARACTERE INTR-O VALOARE NUMERICA

double atof(sir)
int atoi(sir)
long atol(sir)

Exemplu:
double n;
char sir[10]="123";
….

n=atof(sir);

PROCEDURI DE CONVERSIE A UNEI VALORI NUMERICE INTR-UN SIR DE CARACTERE

itoa(val_tip_int, sir, baza)


ltoa(val_tip_long, sir, baza)
ecvt(val_tip_double, nr_cif, *poz_zec, *semn)

Exemplu:
int n;
char sir[10];
….
n=13;
itoa(n,sir,10);
cout<<sir; =>"13"

9. Căutări într-un şir de caractere

9. a) Căutarea unui caracter de la stânga la dreapta:


strchr(şir, caracter)
# include<iostream>
# include<string.h>
# include<ctype.h>

int main()
{ // Cauta caracterul c in sirul ss, de la stanga la dreapta

char ss[50],*p,c;
cin.getline(ss,50);
cin.get(c); //citeste un caracter
p=strchr(ss,c);
if (p) cout<<c<<" exista in sir pe pozitia "<<p-ss+1;
else cout<<"Nu exista";
}

9. b) Afişarea poziţiilor tuturor apariţiilor unui caracter într-un şir parcurs de la stânga la
dreapta

# include<iostream>
# include<string.h>

int main()
{

char ss[50],*p,c;
cin.getline(ss,50); //citeste pana la ENTER si extrage ENTER din buffer
cin.get(c);
// Afiseaza pozitiile tuturor aparitiilor caracterului c in ss de la stg
// la dreapta
p=strchr(ss,c);
while (p)
{
cout<<p-ss+1<<" ";
p=strchr(p+1,c);
}
}

10. c) Afişarea poziţiilor tuturor apariţiilor unui caracter într-un şir parcurs de la dreapta la
stânga :
strrchr(ss,c)
# include<iostream>
# include<string.h>
# include<ctype.h>

int main()
{

char ss[50],*p,c;
cin.getline(ss,50); //citeste pana la ENTER si extrage ENTER din buffer
cin.get(c);
// Afiseaza pozitiile tuturor aparitiilor caracterului c in ss de la
// dreapta la stg
p=strrchr(ss,c); // ultima aparitie
while (p)
{
cout<<p-ss+1<<" ";
strcpy(p,p+1); // se sterge ultimul element gasit
p=strrchr(ss,c);
}
}

11. Căutarea unui subşir de caractere într-un şir de caractere ( de la stânga


la dreapta)
strstr(sir, subşir)
 dacă subşirul nu e găsit în sir returnează pointerul NULL
 dacă subşirul e găsit în şir funcţia returnează adresa primului caracter din şir egal cu primul caracter
din subşir

#include <iostream>

#include<string.h>

#include<conio.h>

char sir[100], subsir[20], *p; //p=variabila de tip pointer care contine

// adresa din sir a primului caracter din subsirul


regasit in sir

int main()

{
cin.getline(sir,199);
cin.getline(subsir,19);
p=strstr(sir,subsir);
if (p)
{cout<<p; // va afisa toate caracterele din sir de la subsirul redasit in
sir
// pana la sfarsitul sirului, adica pana la caracterul NULL
cout<<endl;
cout<<p-sir+1;//afiseaza pozitia primei aparitii a subsirului in sir
}
else
cout<<"Subsir inexistent";
getch();
}

12. Ştergerea unui şir de caractere dintr-un sir de caractere

#include <iostream>

#include<string.h>

#include<conio.h>

char sir[100], subsir[20], *p; //p=variabila de tip pointer care contine

// adresa din sir a primului caracter din subsirul


regasit in sir
int main()
{
cin.getline(sir,199);
cin.getline(subsir,19);
p=strstr(sir,subsir);
if (p)
{strcpy(p,p+strlen(subsir)); //stergerea subsirului presupune plierea
sirului
//de la adresa p+strlen(subsir) peste sirul incepand cu adresa p
cout<<sir;
}
else
cout<<"Subsir inexistent";
getch();
}
11. a) Stergerea tuturor aparitiilor unui subsir din cadrul unui sir

#include<iostream>
#include<conio.h>
#include<string.h>
/* Stergerea tuturor aparitiilor unui subsir din cadrul unui sir */

int main()
{ char sir[1000], subsir[25], *p;
int lung_subsir;
cout<<"Introduceti textul:";cin. getline(sir,1000);
cout<<"Introduceti textul:";cin.getline(subsir,1000);
lung_subsir=strlen(subsir);

p=strstr(sir,subsir); //prima aparitie a subsirului


while (p)
{ strcpy(p,p+lung_subsir);
p=strstr(p,subsir);
}
cout<<sir;
}

11. b) Inlocuirea tuturor aparitiilor unui subsir cu alt subsir

#include<iostream>

#include<conio.h>

#include<string.h>

/* Inlocuirea tuturor aparitiilor unui subsir cu alt subsir */

int main()
{ char sir[100], sterg[25], adaug[25], man[100], *p;
int lung_sterg,lung_adaug;
cout<<"Introduceti textul:";cin. getline(sir,100);
cout<<"Introduceti textul de sters:";cin.getline(sterg,100);
cout<<"Introduceti textul de inlocuit:";cin.getline(adaug,100);
lung_sterg=strlen(sterg);
lung_adaug=strlen(adaug);
p=strstr(sir,sterg); //prima aparitie a subsirului de sters
while (p)
{
man[0]=0; //subsir vid
strncat(man,sir,p-sir);//adauga subsirul pana la sirul de sters
strcat(man,adaug);//adauga sirul adaug
strcat(man,p+lung_sterg); //adauga ceea ce a ramas din sir prin stergerea lui
sterg
strcpy(sir,man); //se copiaza man peste sir
p=strstr(p+lung_adaug,sterg);//poz. pe urmatoarea aparitie a lui sterg
}
cout<<sir;
}

13. Separarea in cuvinte a unui text


#include <iostream>

#include<string.h>

#include<conio.h>
char sir[10001],sep[]=". ,!" , //sirul separatorilor posibili

*p, //p=variabila de tip pointer care contine adresa primului caracter din
cuvantul extras
cuvinte[300][30]; // matricea de caractere=un vector cu cuvinte
int i,n;//variabile numerice globale sunt initializate cu 0
int main()
{
cin.getline(sir,10000);
p=strtok(sir,sep);
while (p)
{ strcpy(cuvinte[n],p);
n++;
p=strtok(NULL,sep);
}

n--;
for(i=0;i<=n;i++)
cout<<cuvinte[i]<<" ";

getch();
return 0;
}

14. ORDONAREA UNUI VECTOR DE CUVINTE

#include <iostream>
#include <string.h>
main ()
{ char cuv[30][255],aux[255];long int n,i,sort;
cin>>n;
cin.get();
for (i=1;i<=n;i++)
cin>>cuv[i];

do
{ sort=1;
for(i=1;i<n;i++)
if ((strcmp(cuv[i],cuv[i+1])>0))
{ aux[0]=0;
strcpy(aux,cuv[i]);
strcpy(cuv[i],cuv[i+1]);
strcpy(cuv[i+1],aux);
sort=0;} }
while(sort);

for (i=1;i<=n;i++)
cout<<cuv[i];

S-ar putea să vă placă și