Sunteți pe pagina 1din 8

MINISTERUL EDUCAŢIEI, CULTURII ȘI CERCETĂRII AL REPUBLICII

MOLDOVA

UNIVERSITATEA TEHNICĂ A MOLDOVEI

Facultatea Calculatoare, Informatică şi Microelectronică

Departamentul Informatică și Ingineria Sistemelor

Lucrare de laborator Nr. 5


Tema: Prelucrarea caracterelor și a șirurilor de caractere

Disciplina: Programarea calculatoarelor

A elaborat st. gr. CR-211 FR, Sava Victoria

A verificat asist. univ., master. Toma Olga

Chisinău 2021
Lucrare de laborator nr. 5
Tema : Prelucrarea caracterelor și a șirurilor de caractere

1. Scopul lucrării

Programarea algoritmilor de prelucrare a caracterelor și a șirurilor de


caractere prin utilizarea funcțiilor predefinite de prelucrare a caracterelor și a
șirurilor de caractere în limbajul C.

2. Condiția

Scrieți un program care citește de la tastatură o propoziție, apoi efectuează


calculele indicate în variantă și afișează pe ecran rezultatul:

Varianta 9. Să se determine lungimea celui mai mic interval dintre cuvinte.

Mersul lucrării :

Noțiuni teoretice și metode folosite :


Numim șir o succesiune de caractere ale alfabetului, adică o propoziție.
Limbajul C nu conține un tip de date special ce definește șiruri de caractere.
Limajul C operaeză cu șirurile cum ar lucra cu o succesiune de date de tip char
amplasate într-un masiv unidimensional. Aici fiecare simbol din șir este o
componentă aparte a masivului. Deci, pentru a defini o variabilă, valoarea căreia va
fi un șir de caractere, în limbajul C trebuie de declarat un masiv de tip char cu o
lungime egală cu cantitatea maximală posibilă de caractere în șir char nume[dim];
Pentru întroducerea șirului în memoria calculatorului este folosită funcția gets().
Această funcție are următoarea sintaxă:
gets(nume); unde nume este parametrul funcției și reperezintă numele
variabilei tip șir; adică a masivului de tip char.
Pentru afișarea la monitor a unui șir de caractre este folosită funcția puts().
Funcția puts() poate avea în calitate de parametru numai un șir de caractere.
Sintaxa funcției este
puts(parametru);
unde în calitate de valoare poate fi folosit un șir de caractere sau numele
unei variabile de tip șir de caractere
Majoritatea compilatoarelor C trec cursorul din rînd nou după executarea
funcției puts(). Însă există și așa versiuni de compilatoare, care nu îndeplinesc
această trecere din rînd nou. În acest caz e binevoită folosirea simbolului de trecere
din rînd nou "/n".

Exemplu: puts("culege numele/n");


Folosind funcțiile gets() și puts() exemplul de mai sus se poate scrie în felul
următor:

Void main (void) {


Char name[15];
puts("culege numele");
Gets(name);
puts("numele dumnevoastră este");
puts(name); }

Atentie ! 'a' si "a" sunt diferite. Prima este o constanta caracter, iar a doua
este o constanta sir de caractere.

Funcțiil specializate pentru manipularea șirurilor de caractere:

Fișierul string.h conține prototipurile funcțiilor specializate pentru


manipularea șirurilor de caractere:

1. Funcția strlen()cu forma generală:


Unsigned int strlen(sir);
Întoarce numărul de elemente dintr-un șir;

2. Funcția strcpy (sir_destinatie, sir_sursa);


Copiază sir_sursa în sir_destinatie;

3. Funcția strcat() cu forma generală;


Char *strcat(sir1, sir2);
Adaugă sir2 la sfîrșitul sirului sir1 (concatenare)

4. Funcția strncat() cu forma generală;


Char *strncat(sir1, sir2,n);
Adaugă primele n caractere din sir2 la sfîrșitul sirului sir1 (concatenare)

5. Funcția strchr() cu forma generală:


strchr(șir,caracter);
Caută prima apariție a lui caracter în șir.

6. Funcția strrchr() cu forma generală:


strchr(șir,caracter);
Caută ultima apariție a lui caracter în șir.

7. Funcția strstr() cu forma generală:


strstr(șir1,șir2);
Caută prima apariție a lui șir2 în șir1.

8. Funcția strcmp()cu forma generală:


int strcmp (sir1, sir2);
Compară cele două șiruri caracter cu caracter și întoarce o valoare:
<0 dacă sir1<sir2;
=0 dacă sir1=sir2;
>0 dacă sir1>sir2;

9. Funcția stricmp()cu forma generală:


int stricmp (sir1, sir2);
Compară cele două șiruri caracter cu caracter(fără a face diferența
dintre literele mari și mici) și întoarce o valoare:
<0 dacă sir1<sir2;
=0 dacă sir1=sir2;
>0 dacă sir1>sir2;

10.Funcția strncmp():
int strncmp ( char * s1, char * s2, int n);
compară primele n caractere din sirurile s1 și s2

11.Funcția strncmpi():
int strncmpi ( char * s1, char * s2, int n);
compară primele n caractere din sirurile s1 și s2 fără a face diferența
12.Funcția strupr(șir) – transformă literele mici în mari.
13. Funcția strlwr(șir) – transformă literele mari în mici.
14. Funcția strnset(șir,caracter,n) – copie caracterul pe primele n locuri ai
șirului

Listingul programului

Funcţia fgets - preia într-un şir n-1 caractere dintr-un fişier - returnează şirul la care
pointează s, respectiv pointerul NULL în caz de eroarea sau la întâlnirea
caracterului EOF.

Funcția de bibliotecă C char * fgets (char *str, int n, FILE *stream) citește o linie
din fluxul specificat și o stochează în șirul indicat de str.

sizeof (str) - este dimensiunea matricei str

Stdin - in cazul dat e un stream din care urmeaza sa fie citita informatia – standard
information
Functia strtok : strtok(sir1,sir2); – are rolul de a separa sirul sir1 in mai multe
siruri (cuvinte) separate intre ele prin unul sau mai multe caractere cu rol de
separator. Sirul sir2 este alcatuit din unul sau mai multe caractere cu rol de
separator.

Functia strtok actioneaza in felul urmator:


o Primul apel trebuie sa fie de forma strtok(sir1,sir2); Functia intoarce adresa
primului caracter al primei entitati. Dupa prima entitate, separatorul este inlocuit
automat prin caracterul nul.
o Urmatoarele apeluri sunt de forma strtok(NULL,sir2); De fiecare data, functia
intoarce adresa de inceput a urmatoarei entitati, adaugand automat dupa ea
caracterul nul.
o Cand sirul nu mai contine entitati, functia returneaza adresa nula (NULL).

Functia strcmp : int strcmp(sir1,sir2); – are rolul de a compara doua siruri de


caractere. Valoarea returnata este <0 (daca sir1 < sir2 ), =0 (daca sir1 = sir2 ) si >0
(daca sir1 > sir2 ). Functia strcmp face distinctie intre literele mari si cele mici ale
alfabetului. Observatie : Functia strcmp returneaza diferenta dintre codurile ASCII
ale primelor caractere care nu coincid.

Rezultate

Schema logică
Concluzie

Am efectuat lucrarea cu tema prelucrarea caracterelor și a șirurilor de caracter. Am


însușit cunoștințe și capacități de introducere, afișare, prelucrare a șirurilor de
caractere în C. De asemenea am învățat funcțiile de prelucrare a șirurilor, și modul
de aplicare a acestora în programe. Ca rezultat am reușit să respect condiția
problemei și să o rezolv.

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