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.

if (p==r) return 0;<br />

else {<br />

strncpy(tok,r,p-r); tok[p-r]=0;<br />

return p;<br />

}<br />

}<br />

// utilizare functie<br />

int main () {<br />

char lin[]=" unu doi trei patru ";<br />

char * p=lin; char t[256];<br />

while ( p=stok(p,t)) // de la adresa p extrage cuvant in t<br />

puts(t); // afisare cuvant<br />

}<br />

In al doilea caz sunt mai multi separatori posibili decât caractere admise <strong>în</strong>tr-un<br />

atom; un exemplu este un sir de cifre zecimale sau un sir de litere (mari si mici) si<br />

separat de alte numere sau nume prin oricare alte caractere. Extragerea unui sir de<br />

cifre sau de litere trebuie realizatã de programator, care poate folosi functiile pentru<br />

determinarea tipului de caracter, declarate <strong>în</strong> fisierul antet . Exemplu:<br />

// extragere cuvinte formate numai din litere<br />

int main ( ) {<br />

char linie[80], nume[20], *adr=linie; int i;<br />

gets(linie);<br />

while (*adr) {<br />

// ignora alte caractere decât litere<br />

while (*adr && !isalpha(*adr)) ++adr; // isalpha declarat in <br />

if (*adr==0) break; // daca sfarsit de linie<br />

for (i=0; isalpha(*adr); adr++, i++)<br />

nume[i]=*adr; // extrage cuvant in “nume”<br />

nume[i]=0; // terminator de sir C<br />

puts (nume); // afiseaza un nume pe o linie<br />

}<br />

}<br />

Cãutarea si <strong>în</strong>locuirea de siruri<br />

Orice editor de texte permite cãutarea tuturor aparitiilor unui sir si, eventual,<br />

<strong>în</strong>locuirea lor cu un alt sir, de lungime mai micã sau mai mare. De asemenea, existã<br />

comenzi ale sistemelor de operare pentru cãutarea unui sir <strong>în</strong> unul sau mai multe<br />

fisiere, cu diferite optiuni (comanda “Find” <strong>în</strong> MS-DOS si MS-Windows).<br />

Cãutarea de cuvinte complete poate folosi functiile “strtok” si “strcmp”, iar<br />

cãutarea de subsiruri <strong>în</strong> orice context (ca pãrti de cuvinte) poate folosi functia “strstr”.<br />

In secventa urmãtoare se cautã si se <strong>în</strong>locuiesc toate aparitiile sirului s1 prin sirul s2<br />

<strong>în</strong>tr-o linie de text, memoratã la adresa “line”:<br />

while(p=strstr(line,s1)) { // adresa lui s1 <strong>în</strong> line

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

Saved successfully!

Ooh no, something went wrong!