Documente Academic
Documente Profesional
Documente Cultură
1) strlen(s)
nu numara NULL
char s[]="acasa";
strlen(s) va fi 5, s[0] va fi 'a', iar s[5] va fi NULL
GRESIT cin.get(s,strlen(s));
CORECT cin.get(s,sizeof(s));
GRESIT
int l=strlen(s);
char s[100];
cin.get(s,100);
2) strcpy(s1,s2)
copiaza continutul sirului s2 in sirul s1
exp
strcpy(s1, "bac");
strcpy(s2,s1);
obs. functia strcpy se foloseste si pentru a sterge prin suprascriere unul sau mai
multe caractere alaturate dintr-un sir
exp1
char aux[10], s[10]="fizica";
strcpy(aux, s+1); => in aux copiez subsirul lui s care incepe la pozitia 1=> izica
strcpy(s,aux); => peste sirul s copiez ceea ce am in auxiliar
cout<<s;=> izica
In code blocks merge si direct strcpy(s,s+1) pt a sterge primul caracter din s, dar
nu merge pe orice compilator
exp2
in general pentru a sterge caracterul de pe pozitia i
strcpy(aux, s+i+1)
strcpy(s+i, aux); sau direct, insa nestandard strcpy(s+i,s+i+1)
Aplicatie: stergeti toate spatiile dintr-un sir citit de la tastatura
4) strcat(s1,s2)
concateneaza pe s2 la finalul lui s1 (s1 si s2 sunt obligatoriu siruri)
char s[10]="info";
strcat(s,"***"); => s va fi info***
strcat(s,'*'); => NU MERGE pt ca '*' este caracter si nu sir
strcat(s,"*"); => s va fi info*
Obs strcat se foloseste atunci cand formam un sir nou prin concatenari succesive.
In acest caz sirul nou trebuie sa porneasca obligatoriu de la sirul vid <=>
char nou[100]; nou[0]=NULL;
char nou[100]="";
sau declaram global
for (i=0;i<strlen(s);i++)
{
if (strchr("aeiou",s[i])!=NULL) s[i]=s[i]-32;
if (strchr("AEIOU",s[i])!=NULL) s[i]=s[i]+32;
}
Obs.
***2 cuvinte pot fi despartite printr-unul sau mai multi separatori
***chiar daca avem ca separator doar spatiul, tot ghilimele folosim, pt ca al
doilea parametru al functiei strtok este sir si nu caracter
***nu e obligatoriu sa declaram variabila sep, putem lucra direct
p=strtok(s," .,");