Documente Academic
Documente Profesional
Documente Cultură
LUCRAREA NR. 5
FUNCII DE INTRARE IEIRE PENTRU CARACTERE I IRURI DE CARACTERE 1. Funcii de intrare (citire)
1.1. int getc(FILE *stream); - citete un caracter dintr-un fiier deschis pentru citire sau de la dispozitivul standard de intrare (stdin de obicei asociat tastaturii) i incrementeaz indicatorul de poziie al fiierului pentru a adresa urmtorul caracter - are prototipul n STDIO.H; - returneaz n caz de succes, caracterul citit (convertit n int fr extensie de semn) sau EOF pentru end-of-file sau eroare. 1.2. int getchar(void); - citete un caracter de la stdin (dispozitiv standard de intrare); - are prototipul n STDIO.H; - este o macrodefiniie (definit ca getc(stdin)) care returneaz urmtorul caracter de la stdin; - n caz de succes, getchar() returneaz caracterul citit, dup ce l-a convertit ntr-un int fr extensie de semn. Pentru end-of-file (sfrit de fiier) sau eroare, returneaz EOF (definit n STDIO.H ca -1). Caracterul CTRL-Z (0x1A) este interpretat ca EOF i convertit n -1 ; - funcia lucreaz bufferat (line buffered), adic nu putem prelucra caracterele citite pn cnd nu s-a tastat Enter; caracterele introduse sunt memorate intr-un buffer i abia dup ce se tasteaz Enter, funcia le citete de acolo. 1.3. char *fgets(char *s, int n, FILE *stream); - citete un ir de caractere dintr-un fiier deschis pentru citire sau de la tastatur n cazul n care stream este stdin; - are prototipul in STDIO.H;
PROGRAMAREA CALCULATOARELOR
LUCRAREA NR. 5
- funcia un ir de caractere terminat cu Enter de la tastatur sau o linie dintr-un fiier. Citirea se oprete la sfritul liniei sau la citirea a n-1 caractere (se ia n considerare prima condiie ndeplinit). Funcia pstreaz n ir caracterul \n, dup care adaug \0. - irul citit se stocheaz n s - funcia returneaz adresa irului de caractere citit n caz de citire corect, valoarea 0 (zero) la citirea sfritului de fiier i n caz de eroare. - spre deosebire de funcia gets (a crei descriere urmeaz), funcia fgets controleaz i lungimea irului de caractere, nepermind depirea lungimii specificate de programator. Din acest motiv se recomand folosirea acestei funcii i nu a funciei gets.
PROGRAMAREA CALCULATOARELOR
LUCRAREA NR. 5
PROGRAMAREA CALCULATOARELOR
LUCRAREA NR. 5
TEMA 1
Problema 1.1 Scriei un program care numr apariiile unui anumit caracter ntr-o secvena de caractere citit de la tastatur. Proiectul trebuie s conin o funcie care primete ca parametru caracterul care trebuie numrat i returneaz numrul de apariii ale caracterului indicat. Problema 1.2 S se scrie un program care contorizeaz toate apariiile vocalelor (fiecare n parte) dintr-o secven citit de la tastatura. Se va include posibilitatea relurii programului la cerere. Problema 1.3 Scriei un program care folosete dou funcii proprii care convertesc textul dintr-un fiier n litere mari sau litere mici dup cum se indic prin dialog de la tastatur. Se vor scrie dou funcii de conversie care vor fi apelate prin intermediul instruciunii switch. Nu se va face apel la funciile de conversie din bibliotec. Textul se citete linie cu linie i se afieaz, dup conversie, pe monitor. Numele fiierului va fi citit de utilizator de la tastatur. Problema 1.4 S se scrie un program care afieaz lungimile cuvintelor dintr-o secvena citita de la tastatura, secvena ncheiata cu Enter. Se consider c orice cuvnt se termin la primul caracter alb. Nu se vor folosi funciile de bibliotec pentru lungimea unui ir.
TEMA 2
Problema 2.1 S se scrie o funcie care are un parametru de tip unsigned long care reprezint un numr dat n baza 10 i care calculeaz reprezentarea valorii parametrului funciei n baza 16 i depune rezultatul ntr-un ir de caractere dat ca al doilea parametru al funciei (irul de caractere va ncepe cu 0x sau 0X). S se testeze funcia scris ntr-un program care citete un numr ntreg de la tastatur i afieaz irul de caractere corespunztor reprezentrii n baza 16. (Nu se vor folosi eventualele funcii de conversie existente n bibliotecule mediului).
PROGRAMAREA CALCULATOARELOR
LUCRAREA NR. 5
Problema 2.2 Se citete de la tastatur un text format din mai multe linii pn la ntlnirea combinaiei de taste CTRL/Z (Windows) sau CTRL/D (Linux). Stabilii numrul de litere, cifre, numrul de separatori, numrul de cuvinte, numrul de propoziii (o propoziie se termin cu '.') i numrul de aliniate (un aliniat ncepe cu un TAB).. De asemenea, se vor afia numrul total de caractere i procentele de litere i cifre din numrul total de caractere. Cuvintele sunt separate prin caractere albe, punct, virgul, dou puncte, punct virgul i cratim. La sfritul fiecrei propoziii avem un punct utmat de un spaiu, iar un aliniat este terminat cu punct urmat de sfrit de linie. Indicaie: Textul se citete caracter cu caracter i se va prelucra pe msur ce se face citirea (nu se vor folosi tablouri de caractere).. Caractere albe sunt spaiu, TAB, Enter. Nu se vor folosi alte funcii de bibliotec dect cele pentru citire i scriere. Problema 2.3 S se scrie o funcie care are un parametru de tip unsigned long care calculeaz reprezentarea numrului n baza 16 i depune rezultatul ntr-un ir de caractere dat ca al doilea parametru al funciei. S se scrie un program care citete de la tastatur un numr ntreg fr semn, folosete funcia de mai sus i afieaz rezultatul pe monitor (reprezentarea n baza 16 va respecta formatul unei constante hexazecimale existent n limbajul C, adic va ncepe cu grupul de caracter 0x).