Florian Moraru PROGRAMAREA CALCULATOARELOR în limbajul C
Florian Moraru PROGRAMAREA CALCULATOARELOR în limbajul C
Florian Moraru PROGRAMAREA CALCULATOARELOR în limbajul C
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Pentru comparare corectã de siruri se va folosi functia “strcmp”. Exemplu :<br />
if (strcmp(a,b)==0) printf (“egale\n”);<br />
Aceeasi eroare se poate face si la compararea cu un sir constant. Exemple:<br />
if ( nume == “." ) break; ...} // gresit !<br />
if ( strcmp(nume,”.”) == 0 ) break;... } // corect<br />
Din aceeasi categorie de erori face parte atribuirea <strong>în</strong>tre pointeri cu intentia de<br />
copiere a unui sir la o altã adresã, desi o parte din aceste erori pot fi semnalate la<br />
compilare. Exemple:<br />
char a[100], b[100], *c ;<br />
// memorie alocata dinamic la adresa “c”<br />
c = (char*) malloc(100);<br />
a = b; // eroare la compilare<br />
// corect sintactic dar nu copiaza sir (modifica “c”)<br />
c = a;<br />
// copiaza sir de la adresa “a” la adresa “c”<br />
strcpy (c,a);<br />
// copiaza la adresa “a” sirul de la adresa “b”<br />
strcpy (a,b);<br />
Functiile standard "strcpy" si strcat" adaugã automat terminatorul zero la sfârsitul<br />
sirului produs de functie.<br />
Functii standard pentru operatii cu siruri<br />
Principalele categorii de functii care lucreazã cu siruri de caractere sunt:<br />
- Functii pentru siruri terminate cu zero (siruri complete); numele lor <strong>în</strong>cepe cu “str”.<br />
- Functii pentru subsiruri de lungime maximã; numele lor <strong>în</strong>cepe cu “strn”<br />
- Functii pentru operatii cu blocuri de octeti (neterminate cu zero); numele lor <strong>în</strong>cepe<br />
cu “mem”.<br />
Aceste functii sunt declarate <strong>în</strong> fisierele si , care trebuie incluse<br />
<strong>în</strong> compilarea programelor care lucreazã cu siruri de caractere (alãturi de alte fisiere de<br />
tip “h”).<br />
Urmeazã o descriere putin simplificatã a celor mai folosite functii standard pe siruri<br />
de caractere.<br />
// strlen: lungimea sirului “s” ( “s” terminat cu un octet zero)<br />
int strlen(char * s);<br />
// strcmp: comparã sirurile de la adresele s1 si s2<br />
int strcmp (char * s1, char * s2);<br />
// strncmp: comparã primele n caractere din sirurile s1 si s2