Prelucrarea Șirurilor Caracteriale

Previzualizare laborator:

Extras din laborator:

Obiectivele temei

1. Aprofundarea cunoştinţelor în limbajul şi mediul TurboC şi perfecţionarea tehnicii de programare cu subprograme predefinite în prelucrarea şirurilor de caractere în C.

2. Însuşirea procedeelor de utilizare efectivă a funcţiilor predefinite referitoare la şiruri caracteriale.

3. Analiza specificului de algoritmizare şi progamare a fragmentelor de texte prin comparaţia soluţiilor stereotipe şi celor eficiente de introducere, afişare şi diverse manipulări asupra textelor: parcurgeri, căutări, schimbări şi rearanjări etc.

Subiectele temei şi ordinea executării

1. Studierea principiilor prelucrării (descrierii, declarării, formării, etc.) şirurilor caracteriale în C.

2. Studierea metodelor şi tehnicilor de bază de prelucrare a textelor ca şiruri caracteriale, analizând exemplele din indicaţii şi de reflectat în raport cu comentariile de rigoare.

3. Elaborarea algoritmului şi programului de soluţionare a variantei respective (Anexa).

4. Depanarea programului şi verificarea corectitudinei cu ajutorul testelor elaborate.

Conţinutul raportului (vezi lucr. de laborator nr.1-6)

Suplimentar: Evidenţierea specificului prelucrării şirurilor caracteriale în C şi analiza erorilor admise pe parcursul efectuării lucrării şi eficienţa algoritmilor elaboraţi.

Întrebările de autocontrol:

1.1. Caracterizaţi şirurile caracteriale şi declaraţi în diferite moduri posibile în limbajul C.

Un şir este o succesiune de caractere scrise între ghilimele, de exemplu „ABCD”.

Când un şir apare într-un program C, compilatorul creează un masiv de caractere care conţine caracterele şirului şi plasează automat caracterul NULL (‚’) la sfârşitul şirului, astfel ca programele care operează asupra şirurilor să poată detecta sfârşitul acestora. Această reprezentare înseamnă că, teoretic, nu există o limită a lungimii unui şir, iar programele trebuie să parcurgă şirul, analizându-l pentru a-i determina lungimea. Se admit şi şiruri de lungime zero.

Tehnic, un şir este un masiv ale cărui elemente sunt caractere. El are tipul masiv de caractere şi clasa de memorie static. Un şir este iniţializat cu caracterele date.

tip_de_date nume_şir[dimensiune];

unde:

- -tip_de_date: este tipul datei (obligatoriu char) ;

- -nume şir: este numele pe care îl dăm şirului ;

- -dimensiune: reprezintă numărul de caractere pe care îl conţine şirul .

- ca tablou de caractere; exemple:

#define MAXCUVINT 100

char name [15]; char w[MAXCUVINT]; char sir1[30]; char sir2[10]="exemplu";

- ca pointer la caractere; exemple:

char *sir3; // şir3 trebuie initializat cu adresa unui şir sau a unui spatiu alocat pe heap

sir3=sir1; // sir3 ia adresa unui sir static

// sir3=&sir1; sir3=&sir1[0]; sunt echivalente cu instr de atribuire de mai sus

sir3=(char *)malloc(100); // se aloca dinamic un spatiu pe heap.

char *sir4="test"; // sir4 este initializat cu adresa sirului constant

char s[10]; vom avea tabloul s, cu elemente de tip char, având 10 elemente

1.2. În ce mod se citesc şi se afişează elementele şirurilor caracteriale?

Citirea unui sir poate fi efectuat in mai multe moduri de exemplu:

1) char s[20];

scanf(“%s”,s); //astfel va citi sirul pina la apasarea tastei space

2) gets(s); //va citi sirul pina la apasarea tastei enter

1.3. Enumeraţi şi exemplificaţi apelurile funcţiilor predefinite pentru prelucrarea şirurilor caracteriale.

declarate in stdio.h

char * gets(char * s);

citeste caracterele din intrare pina la intalnirea caracterului Enter, care nu se adauga la sirul s; plaseaza '' la sfarsitul lui s; returneaza adresa primului caracter din sir; daca se tasteaza CTRL/Z returneaza NULL; codul lui Enter e scos din buffer-ul de intrare

int puts(char * s);

tipareste sirul s, trece apoi la rand nou

scanf("%s",s);

citeste caracterele din intrare pina la intalnirea primului blanc sau Enter, care nu se adauga la sirul s; plaseaza '' la sfarsitul lui s; daca se tasteaza CTRL/Z returneaza EOF; codul lui blanc sau Enter raman in buffer-ul de intrare

printf("%s",s);

tipareste sirul s

declarate in string.h

int strcmp(char *s1,char *s2);

returneaza <0, daca s1 < s2

0, daca s1 = s2

>0, daca s1 > s2

int strncmp(char *s1,char *s2,int n);

comparare a doua siruri pe lungimea n

char* strcpy(char *d,char *s);

copiaza sirul sursa s in sirul destinatie d; returneaza adresa sirului destinatie

char* strncpy(char *d,char *s,int n);

copiaza maxim n caractere de la sursa la destinatie; returneaza adresa sirului destinatie

int strlen(char *s);

returneaza lungimea sirului fara a numara caracterul terminator

char* strcat(char *d,char *s);

concateneaza cele doua siruri si returneaza adresa sirului rezultat

char* strchr(char s,char c);

returneaza pozitia primei aparitii a caracterului c in sirul s, respectiv NULL daca c nu e in s

char* strstr(char *s,char *ss);

returneaza pozitia primei aparitii a sirului ss in sirul s, respectiv NULL daca ss nu e in s.

Download gratuit

Documentul este oferit gratuit,
trebuie doar să te autentifici in contul tău.

Structură de fișiere:
  • Prelucrarea Sirurilor Caracteriale.doc
Alte informații:
Tipuri fișiere:
doc
Nota:
8/10 (1 voturi)
Nr fișiere:
1 fisier
Pagini (total):
8 pagini
Imagini extrase:
8 imagini
Nr cuvinte:
1 546 cuvinte
Nr caractere:
9 130 caractere
Marime:
91.23KB (arhivat)
Publicat de:
NNT 1 P.
Nivel studiu:
Facultate
Tip document:
Laborator
Domeniu:
Calculatoare
Predat:
la facultate
Materie:
Calculatoare
Sus!