17.04.2013 Views

Florian Moraru PROGRAMAREA CALCULATOARELOR în limbajul C

Florian Moraru PROGRAMAREA CALCULATOARELOR în limbajul C

Florian Moraru PROGRAMAREA CALCULATOARELOR în limbajul C

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!