Sunteți pe pagina 1din 17

Capitolul 12 Funcii standard

248

Biblioteca C standard cuprinde o mare varietate de func\ii, instrumente puternice =i eficiente ]n elaborarea programelor. O parte din aceste func\ii, cea mai uzual[, a fost deja prezentat[ de-a lungul lucr[rii. n continuare prezent[m prototipurile func\iilor standard C, mai importante, ]nso\ite de un scurt comentariu privind argumentele lor, valorile ]ntoarse =i efectul ac\iunii lor. !e poate face o clasificare a func\iilor C dup[ cum urmeaz[" func\ii pentru opera\ii de intrare#ie=ire func\ii pentru prelucrarea caracterelor func\ii pentru prelucrarea =irurilor de caractere func\ii pentru gestiunea memoriei $eap func\ii matematice func\ii pentru gestiunea timpului UNC|II PENTRU OPERA|II DE INTRARE/IE+IRE FUNC|II DESCHIDERE/}NCHIDERE FI+IER
FILE * fopen (const char * numefis, const char mod);

desc$ide fi=ierul cu numele numefis =i ]l asocieaz[ unui flu% identificat printr-un pointer. &odul de desc$idere este specificat de mod 'vezi Capitolul 10(. )ntoarce un pointer c[tre o structur[ *)+, dac[ opera\ia a avut succes =i un pointer de valoare -.++, dac[ opera\ia a e=uat.
int fclose(FILE *fp);

]nc$ide fi=ierul desc$is cu fopen(). /ointerul fp este pointerul fi=ier returnat la apelarea func\iei fopen(). FUNC|II CARE CONTROLEAZ{ INDICATORUL DE POZI|IE }N FI+IER

Capitolul 12 Funcii standard

249

int fseek(FILE *fp,long nr_octeti,int origine);

pozi\ioneaz[ indicatorul de pozi\ie ]n fi=ierul fp la valoarea specificat[ de origine la care se adaug[ deplasarea egal[ cu nr_octeti 'vezi Capitolul 10(.
int fgetpos(FILE *fp,long int *poz);

memoreaz[ valoarea curent[ a indicatorului de pozi\ie ] n obiectul indicat de poz. n caz de succes se ]ntoarce o valoare diferit[ de 0, iar ]n caz de eroare valoarea 0.
int fsetpos(FILE *fp,const long int *poz);

seteaz[ indicatorul de pozi\ie la valoarea *poz, ob\inut[ anterior cu func\ia fgetpos(). n caz de succes se ]ntoarce o valoare diferit[ de 0, iar ]n caz de eroare valoarea 0.
long ftell(FILE *fp);

]ntoarce valoarea curent[ a indicatorului de fi=ier sau ! ]n caz de eroare.


"oid feof(f);

]ntoarce o valoare diferit[ de 0 dac[ indicatorul de pozi\ie se afl[ la sf0r=itul fi=ierului =i 0 ]n caz contrar. FUNC|II PENTRU CITIREA +I SCRIEREA CARACTERELOR
int fgetc(FILE *fp);

]ntoarce valoarea caracterului c0nd opera\ia de citire din fi=ierul fp are succes sau ,O* c0nd s-a atins sf0r=itul fi=ierului sau a avut loc o eroare.
int fputc(int c,FILE *fp);

]ntoarce caracterul scris ]n fi=ierul fp, ]n caz de succes sau ,O* ]n caz de eroare.
int ungetc(int c,FILE *fp);

Capitolul 12 Funcii standard

250

se repune un caracter ]n bufferul asociat fi=ierului fp. !e ]ntoarce c ]n caz de succes sau ,O* ]n caz de eroare.
int getc(FILE *fp);

este similar[ cu fgetc() 'este macro-instruc\iune(.


int getchar("oid);

este ec$ivalent[ cu fgetc(stdin)1


int putc(int c, FILE *fp);

este similar[ cu fputc() 'este macro-instruc\iune(.


int putchar(int c);

este ec$ivalent[ cu fputc(int c,stdout)1 FUNC|II PENTRU CITIREA +I SCRIEREA +IRURILOR DE CARACTERE
char *fgets(char *str,int lg, FILE *fp);

cite=te din fi=ier un =ir de lungime cel mult lg ! caractere =i le transfer[ ]n =irul str. n caz de succes este ]ntoars[ adresa =irului str, iar ]n caz de eroare sau dac[ se atinge sf0r=it de fi=ier se ]ntoarce valoarea -.++.
int fputs(const char *sir, FILE *fp);

scrie ]n fi=ierul fp =irul precizat la adresa sir. n caz de succes ]ntoarce ultimul caracter scris, iar ]n caz de insucces ]ntoarce caracterul ,O*.
char *gets(char *sir);

cite=te un =ir de caractere de la tastatur[ =i ]l depune ]n sir. Caracterul #$n# nu se include ]n =ir =i se adaug[ terminatorul #$0#. *unc\ia ]ntoarce sir ]n caz de succes sau ,O* ]n caz de eroare.
int puts(const char *sir);

scrie =irul sir pe ecran ]ntorc0nd ultimul caracter scris sau ,O* ]n caz de eroare.

Capitolul 12 Funcii standard

251

FUNC|II DE INTRARE/IE+IRE CU FOR

AT

int fscanf(FILE *fp, const char *sir_format);

]ntoarce num[rul de valori pentru care citirea, conversia =i memorarea datelor a fost f[cut[ corect. 2ac[ apare o eroare ]nainte de a ]ncepe citirea se ] ntoarce ,O*.
int scanf(const char *sir_format);

este ec$ivalent[ cu func\ia


int fscanf(stdin, const char *sir_format); int sscanf(char *sir, const char *sir_format);

cite=te date din =irul de caractere sir conform formatului. 3alorile ]ntoarse de func\iile !"a#$%& =i !!"a#$%& sunt similare celor ]ntoarse de func\ia $!"a#$%&.
int fprintf(FILE *fp, const char *sir_format);

]ntoarce num[rul de caractere scrise efectiv sau o valoare negativ[ ]n caz de insucces.
int printf(const char *sir format);

este ec$ivalent[ cu func\ia


fprintf(stdout, const char *sir_format); int sprintf(char *sir,const char *sir_format);

scrie date conform formatului ]n =irul sir. !imilare cu func\iile $p'i#t$%&, p'i#t$%&, !p'i#t$%& sunt func\iile ($p'i#t$%&, (p'i#t$%& respectiv (!p'i#t$%& , pe care nu le prezent[m ]n aceast[ lucrare. /entru documentare se poate consulta [2].

Capitolul 12 Funcii standard

252

FUNC|II PENTRU CITIREA +I SCRIEREA )LOCURILOR DE DATE


size_t fread("oid *%uf, size_t nr_oct, size_t n%, FILE *fp);

cite=te din fi=ierul fp, n% blocuri, fiecare cu lungimea nr_oct =i le transfer[ ]n zona specificat[ de %uf. ntoarce num[rul de blocuri citite efectiv.
size_t f&rite(const "oid *%uf,size_t nr_oct, size_t n%, FILE *fp);

scrie ]n fi=ierul fp, n% blocuri preluate din zona specificat[ de %uf, fiecare bloc av0nd lungimea egal[ cu nr_octeti. !e ]ntoarce num[rul de blocuri scrise efectiv. FUNC|II PENTRU TESTAREA APARTENEN|EI LA CLASE DE CARACTERE /rototipurile acestor func\ii apar ]n fi=ierul antet 'ct(pe)h'. *unc\iile se aplic[ unui parametru de tip ] ntreg =i ]ntorc valori diferite de 0 dac[ e satisf[cut[ condi\ia de apartenen\[ =i 0 ]n caz contrar.
int isalnum(int c)1 testeaz[ dac[ c e alfanumeric int isalpha(int c)1 testeaz[ dac[ c e alfabetic int iscntrl(int c)1 testeaz[ dac[ c e caracter de control 'FF, *L, +,, -., /., 0EL, 01(1 int isdigit(int c)1 testeaz[ dac[ c este cifr[ zecimal[ int isgraph(int c)1 testeaz[ dac[ c este caracter grafic

f[r[ spa\iu

int islo&er(int c)1 testeaz[ dac[ c este litera mic[ int isprint(int c)1 testeaz[ dac[ c e caracter tip[ribil

inclusiv spa\iu int ispcmct(int c)1 testeaz[ dac[ c este caracter tip[ribil f[r[ spa\iu sau caracter alfanumeric

Capitolul 12 Funcii standard

253

int isspace(int c)1 testeaz[ dac[ c este +,, FF, -., /., *L, spa\iu int isupper(int c)1 testeaz[ dac[ c este liter[ mare int is2digit(int c)1 testeaz[ dac[ c este cifr[ $e%azecimal[ '0-3, 4-F sau a-f(1

4ot aici amintim func\iile tolo&er() =i toupper()"


int tolo&er(int c); converte=te o liter[ mic[ la litera

mare corespunz[toare mic[ corespunz[toare

int toupper(int c); converte=te o liter[ mare la litera

/entru ambele func\ii, c r[m0ne nemodificat dac[ nu este liter[5

UNC|II PENTRU PRELUCRAREA +IRURILOR DE CARACTERE !e deosebesc trei categorii de func\ii"

func\ii pentru citirea =i scriere =irurilor, prezentate deja 'care au prototipurile ]n stdio)h( func\ii cu prototipul in string)h 'copiere, comparare, concatenare, ini\ializare =iruri( func\ii de conversie a =irurilor 'cu prototipul in stdli%)h(

Capitolul 12 Funcii standard

254

FUNC|II CU PROTOTIPUL IN STRIN*+H ,%ist[ dou[ categorii de func\ii" func\ii care se refer[ la =iruri care se termin[ prin #$0# =i func\ii ]n care =irurile sunt v[zute pur =i simplu ca tablouri de caractere 'f[r[ terminatorul #$0#(. Fu#",iil- "a'- !- '-$-'. la /i'u'i "u t-'0i#ato' \0 sunt"
char *strcat(char *sir!, const char *sir5);

concateneaz[ sir5 la sir! =i returneaz[ sir!.


char *strchr(const char *sir, int c);

caut[ c ]n =irul de caractere sir ]ntorc0nd ]n caz de succes pozi\ia lui, iar ]n caz contrar valoarea -.++.
int strcmp(const char sir!, const char sir5);

compar[ le%icografic =irurile sir! =i sir5 =i ]ntoarce o valoare


60 dac[ sir!6sir5 70 dac[ sir!7sir5 80 dac[ sir!8sir5 char *strcp((char *sir!, const char *sir5);

copiaz[ =irul sir5 ]n =irul sir! =i ]ntoarce sir!.


size_t strcspn(const char *sir!, const char *sir5);

]ntoarce lungimea prefi%ului =irului sir! care nu con\ine nici unul din caracterele =irului sir5.
char *strerror(int er_cod);

]ntoarce un pointer c[tre un =ir ce reprezint[ un mesaj de eroare corespunz[tor codului er_cod.
size_t strlen(const char *sir);

]ntoarce num[rul de caractere din =irul sir, e%clusiv terminatorul #$0#.


char *strncat(char *sir!, const char *sir5, size_t nr);

Capitolul 12 Funcii standard

255

concateneaz[ cel mult nr caractere din sir5 la sir! =i ] ntoarce sir!.


int *strncmp(const char *sir!, const char *sir5, size_t nr);

compar[ cel mult nr caractere din sir! =i sir5 =i ] ntoarce valori la fel ca func\ia strcmp().
char *strncp((char *sir!, const char *sir5, size_t nr);

copiaz[ cel mult nr caractere din =irul sir5 ]n =irul sir! =i ]ntoarce sir!.
char *strp%rk(const char *sir!, const char *sir5);

]ntoarce un pointer la prima apari\ie ]n sir! a oric[rui caracter din sir5 sau -.++ dac[ nici un caracter din sir5 nu se afl[ ]n sir!.
char * strrchr(const char *sir, int c);

]ntoarce pointerul la ultima apari\ie a lui c ]n sir sau -.++ dac[ c nu apare ]n sir.
size_t strspn(const char *sir!, const char *sir5);

]ntoarce lungimea prefi%ului =irului sir! care con\ine numai elemente din sir5.
char *strstr(const char *sir!, const char *sir5);

]ntoarce un pointer la prima apari\ie ]n sir! a =irului sir5 sau -.++ dac[ sir5 nu este sub=ir al =irului sir!.
char *strtok(char *sir!, const char sir5);

caut[ ]n sir! sub=iruri delimitate de caractere din =irul sir5. U'0.toa'-l- $u#",ii !- '-$-'. la ta1lou'i 2"a'a"t-'- 'f[r[ a avea terminatorul #$0# ca la =iruri(.
"oid *memchr(const "oid *ta%lou, int c, size_t nr);

caut[ ]n tabloul indicat prin tablou, prima apari\ie a lui c printre cele nr caractere. ntoarce adresa lui ]n caz de succes sau -.++ ]n caz contrar.

Capitolul 12 Funcii standard

256

"oid memcmp(const "oid *ta%lou!, const "oid *ta%lou5, size_t nr);

compar[ ]n sens le%icografic primele nr caractere ale tablourilor ta%lou! =i ta%lou5. ntoarce un ]ntreg calculat ca la func\ia strcmp().
"oid *memcp(("oid *ta%lou!, const "oid *ta%lou5, size_t nr);

copiaz[ nr caractere din ta%lou5 ]n tabloul indicat de ta%lou!. 2ac[ tablourile se suprapun efectul este nedefinit.
"oid *memmo"e("oid *ta%lou!, const "oid *ta%lou5, size_t nr);

copiaz[ nr caractere din ta%lou5 ]n ta%lou!. 4ablourile se pot suprapune.


"oid *memset("oid *ta%lou, int c, size_t nr);

copiaz[ c 'octetul s[u inferior( ]n primele nr caractere ale tabloului ta%lou. FUNC|II DE CON3ERSIE A +IRURILOR .rm[toarele func\ii realizeaz[ conversii ale =irurilor de caractere ]n valori numerice.
dou%le atof(const char *str);

]ntoarce rezultatul conversiei =irului de caractere indicat de pointerul str la un num[r real. 6irul trebuie s[ con\in[ o valoare numeric[ scris[ corect, ]n caz contrar se ]ntoarce o valoare nedefinit[. 2elimitatorul final poate fi orice caracter diferit de punct =i de literele e sau E 'care intervin ]n mod natural ]n reprezentarea unui num[r ]n virgul[ mobil[(.
int atoi(const char *str);

Capitolul 12 Funcii standard

257

]ntoarce rezultatul conversiei =irului de caractere indicat de pointerul str la un num[r ]ntreg. 6irul trebuie s[ con\in[ o valoare ]ntreag[ corect scris[, ]n caz contrar se ]ntorce o valoare nedefinit[. 2elimitatorul final poate fi orice caracter diferit de cifr[.
int atol(const char *str);

]ntoarce rezultatul conversiei =irului de caractere indicat de pointerul str la o valoare long int. 6irul trebuie s[ con\in[ o valoare ]ntreag[ valid[, ]n caz contrar se ]ntoarce o valoare nedefinit[. 2elimitatorul final poate fi orice caracter diferit de cifr[.
dou%le strtod(char *str, char **sf);

]ntoarce rezultatul conversiei =irului de caractere indicat de pointerul str la un num[r ]n format dou%le, ignor0nd spa\iile libere ini\iale. 6irul trebuie s[ con\in[ o valoare numeric[ corect scris[, ]n caz contrar se ] ntoarce valoarea zero. 2elimitatorul final poate fi orice caracter diferit de punct =i de literele e sau E. n *sf se depune pointerul la delimitatorul final din sir.
long strtol(const char *str, char **sf, int radi2);

]ntoarce rezultatul conversiei =irului de caractere indicat de pointerul str ignor0nd spa\iile libere ini\iale ] ntr-un num[r de tip long, reprezentat ]n baza de numera\ie stabilit[ de radi2. 2ac[ radi2 este zero se consider[ c[ baza este 9, !0 sau !: ]n caz contrar baza este dat[ de valoarea radi2 aflat[ obligatoriu ]ntre 5 =i ;:. 2elimitatorul poate fi orice caracter care nu poate intra ]n componen\a unui num[r ]ntreg. 2ac[ nu se poate realiza conversia se ]ntoarce valoarea zero. n *sf se depune pointerul la delimitatorul final din =ir.
unsigned long strtoul(const *start, char **sf, int radi2);

ac\ioneaz[ similar cu func\ia strtol() cu e%cep\ia faptului c[ ]ntoarce ]n caz de succes o valoare unsigned long.

Capitolul 12 Funcii standard

258

UNC|II PENTRU *ESTIUNEA

ORIEI HEAP

"oid *calloc(size_t nr, size_t nr_oct);

aloc[ o zon[ compact[ din memoria $eap pentru un tablou av0nd nr elemente fiecare de lungime nr_oct octe\i. ntoarce un pointer c[tre primul octet al tabloului sau -.++ dac[ nu e%ist[ suficient[ memorie pentru alocare.
"oid *free("oid *ptr);

dealoc[ zona de memorie indicat[ de ptr, alocat[ anterior cu func\iile calloc(), malloc() sau realloc().
"oid *malloc(size_t nr_oct);

aloc[ o zon[ compact[ din memoria $eap de dimensiune nr_oct octe\i. ntoarce un pointer la primul octet din zona de memorie alocate sau -.++ dac[ nu e%ist[ spa\iu disponibil.
"oid *realloc("oid *ptr, size_t nr_oct);

realoc[ zona de memorie indicat[ de ptr 'alocat[ anteriror cu ajutorul func\iilor calloc() =i malloc()( la valoarea dat[ de nr_oct octe\i. ntoarce un pointer la zona realocat[ sau -.++ dac[ nu e%ist[ suficient spa\iu de memorie pentru alocarea celor nr_oct octe\i, situa\ie ]n care zona ini\ial[ de memorie r[m0ne nemodificat[.

Capitolul 12 Funcii standard

259

UNC|II

ATE

ATICE

!tandardul 7-!) C define=te 55 func\ii matematice frecvent utilizate ]n programe. /rototipurile lor sunt con\inute de fi=ierul antet 'math)h'. 7rgumentele func\iilor sunt, cu mici e%cep\ii, de tip dou%le iar valorile ]ntoarse sunt de tip dou%le. /rincipalele erori care pot apare la apelul func\iilor sunt" -'oa'- 2- 2o0-#iu =i -'oa'- 2- '-p'-4-#ta'- . ,roarea de domeniu apare atunci c0nd argumentele func\iei sunt ]n afara domeniului s[u de defini\ie 'de e%emplu valori negative folosite drept argumente pentru func\ia logaritm(, iar eroarea de reprezentare apare atunci c0nd rezultatul ]ntors de func\ie nu poate fi reprezentat. 7ceste erori provoac[ setarea variabilei globale incorporate errno la valorile ,2O& respectiv ,87-9,. Cele dou[ macrocomenzi sunt definite ]n fi=ierul antet 'errno)h'. n situa\iile de eroare descrise se ]ntoarce o valoare definit[ la implementare, ]n cazul erorii de domeniu =i respectiv valoarea :.9,;37+ 'o valoare <mare= definit[ ]n fi=ierul antet 'math)h'( ]n cazul erorii de reprezentare. 7rgumentele func\iilor trigonometrice care sunt ung$iuri sunt considerate ]n radiani.
dou%le dou%le dou%le dou%le dou%le dou%le dou%le dou%le dou%le dou%le dou%le acos(dou%le 2); arccos de 2 asin(dou%le 2); arcsinus de 2 atan(dou%le 2); arctangent[ de 2 atan5(dou%le (,dou%le 2); arctangent[ de (<2 ceil(dou%le 2); cel mai mic ]ntreg 87 2 cos(dou%le 2); cosinus de 2 cosh(dou%le 2); cosinus $iperbolic de 2 e2p(dou%le 2); e%ponen\ial[ e la 2 fa%s(dou%le 2); valoarea absolut[ a lui 2 floor(dou%le 2); cel mai mare ]ntreg 67 2 fmod(dou%le 2,int (); restul ]mp[r\irii lui 2 la ( v[zu\i ca ]ntregi '2 modulo ((

Capitolul 12 Funcii standard

260

dou%le fre2p(dou%le 2,dou%le e2p);intoarce valoarea mantisei num[rului 2 si

memoreaz[ valoarea e%ponentului ]n e2p astfel ]nc0t 27mantisa*5e2p 'mantisa e cuprins[ ]ntre 0)= =i !(. dou%le lde2p(dou%le 2,int e2p); calculeaz[ 2*5e2p dou%le log(dou%le 2); calculeaz[ logaritm natural de 2 dou%le log!0(dou%le 2); calculeaz[ logaritm zecimal de
2 dou%le modf(dou%le 2,dou%le *pin); descompune un num[r 2 de tip dou%le ]n partea

dou%le

dou%le dou%le dou%le dou%le dou%le

sa frac\ionar[ pe care o ]ntoarce =i partea ]ntreag[ pe care o memoreaz[ ]n pin po&(dou%le 2,dou%le (); ]ntoarce 2( pentru 2 =i ( apar\in0nd domeniul de defini\ie sin(dou%le 2); sinus de 2 sinh(dou%le 2); sinus $iperbolic de 2 s>rt(dou%le 2); r[d[cina p[trat[ a lui 2 tan(dou%le 2); tangent[ de 2 tanh(dou%le 2); tangent[ $iperbolic[ de 2

UNC|II PENTRU *ESTIUNEA TI

PULUI

/rototipurile func\iilor care gestioneaz[ timpul se g[sesc ]n fi=ierul $eader 'time)h'. 7cest $eader con\ine defini\iile a patru tipuri de date"
size_t, clock_t, time_t =i tm)

4ipul size_t reprezint[ un ]ntreg f[r[ semn. 4ipurile clock_t =i time_t se folosesc la reprezentarea orei =i a datei sistemului, ca date de tip long integer. !tructura standard de tip struct tm are alc[tuirea urm[toare"
struct tm

Capitolul 12 Funcii standard

261

? int int int int int int int int int

tm_sec;<* secunde 0)))=3 *< tm_min;<* minute 0)))=3 *< tm_hour;<* ore 0)))5; *< tm_mda(;<* ziua din luna !)));! *< tm_mon;<* luna 0)))!! *< tm_(ear;<* anul 87!300 *< tm_&da(;<* ziua saptamanii 0))): *< tm_(da(;<* ziua din an 0)));:= *< tm_isdst;<* indicator al orei de "ara este@ 80 daca functioneaza 70 daca nu functioneaza 60 daca nu e2ista informatii in domeniu *<

+ist[m mai jos prototipurile celor mai uzuale func\ii cuprinse ]n fi=ierul 'time)h'
char *asctime(const struct tm *ptr);

converte=te timpul din structura indicat[ de pointerul ptr ]ntr-un =ir de forma
zi luna data ore@minute@secunde an$n$0, unde

pointerul ptr este ob\inut cu ajutorul func\iei localtime() sau cu functia gmtime())
clock_t clock("oid);

ntoarce num[rul de impulsuri de ceas, efectuate o dat[ cu lansarea programului ]n e%ecu\ie. 4ransformarea ]n secunde se face ]mp[r\ind aceast[ valoare la macroul C+OC>!_/,8_!,C care d[ num[rul de b[t[i pe secund[ ale ceasului.
char *ctime(const time_t *ptr);

converte=te timpul de calendar din structura indicat[ de pointerul ptr ]ntr-un =ir de forma
zi luna data ore@minute@secunde an$n$0

/ointerul ptr este ob\inut cu ajutorul func\iei time(). ,a este ec$ivalent[ cu asctime(local(time))1
dou%le diff_time(time_t timp5, timp_t timp!);

]ntoarce valoarea timp5 timp! e%primat[ ]n secunde.

Capitolul 12 Funcii standard

262

struct tm *gmtime(const time_t *ptr);

converte=te timpul de calendar indicat de pointerul ptr ]n 4imp Coordonat .niversal '.niversal Coordinated 4ime( ]ntorc0nd un pointer la o structur[ de tip tm. 2ac[ nu este disponibil se ]ntoarce -.++. /ointerul ptr este ob\inut, printr-un apel al func\iei time().
struct tm *localtime(const time_t *ptr);

converte=te tipul de calendar indicat de pointerul ptr ] n timp local ]ntorc0nd un pointer la o structur[ de tip tm. 2ac[ nu e disponibil se ]ntoarce -.++. /ointerul ptr e ob\inut printr-un apel al func\iei time().
size_t strftime(char *sir, size_t dimma2, const char *sir_format, const struct tm *ptr);

converte=te datele din structura indicat[ de pointerul ptr ]n =irul sir, conform cu formatul sir_format.
time_t time(time_t *ptr);

]ntoarce ora curent[ calendaristic[ a sistemului sau B! dac[ nu e%ist[ aceast[ facilitate. !e poate apela cu ptr7*CLL sau cu o adres[ a unei variabile de tip time_t. n ultimul caz valoarea ] ntoars[ se atribuie de asemenea variabilei indicate de ptr. LTE FUNC|II UTILE
int a%s(int intr); <* fisier header stdli%)h *<

]ntoarce un ]ntreg egal cu valoarea absolut[ a ] ntregului intr.


"oid clearerr(FILE *fp); <* fisier header stdio)h *<

=terge indicatorii de eroare =i de sf0r=it de fi=ier.


di"_t di"(int numarator, int numitor); <* fisier header stdli%)h *<

Capitolul 12 Funcii standard

263

]ntoarce o structur[ de tip di"_t care con\ine c0tul =i restul ]mp[r\irii num[r[tor la numitor ]n membrii >uot, respectiv rem ai acestei structuri.

"oid e2it(int cod); <* fisier header graph)h *<

produce ie=irea dintr-un program =i revenirea ]n sistemul de operare. 2ac[ valoarea parametrului cod este 0 sau ,?)4_!.CC,! se indic[ terminarea cu succes a programului, iar dac[ este diferit de 0 sau ,?)4_*7)+.8, se indic[ terminarea cu eroare a programului.
int ferror(FILE fp); <* fisier header stdio)h *<

]ntoarce fie valoarea 0 indic0nd faptul c[ nu are loc o eroare sau o valoare diferit[ de 0 dac[ indicatorul de eroare asociat lui fp este pozi\ionat.
int fflush(FILE fp); <* fisier header stdio)h *<

gole=te %ufferul asociat unui fi=ier desc$is pentru scriere sau citire#scriere. ,fectul este nedefinit dac[ fi=ierul a fost desc$is numai pentru citire. ntoarce ,O* ]n caz de eroare sau 0 ]n caz normal.
long la%s(long lintr); <* fisier header stli%)h *<

]ntoarce un ]ntreg egal cu valoarea absolut[ a ] ntregului lintr.


ldi"_t ldi"(long numarator, long numitor); <* fisier header stdli%)h *<

]ntoarce o structur[ de tip ldi"_t care con\ine c0tul =i restul ]mp[r\irii ]ntre num[r[tor =i numitor ]n membrii >uot =i rem de tip long ai acestei structuri.
int remo"e(const char *numefis); <* fisier header stdio)h *<

=terge fi=ierul cu nume numefis. ntoarce 0 ]n caz de succes =i o valoare diferit[ de 0 ]n caz de eroare.
int rename(const char *nume_nou, const char *nume_"echi); <* fisier header stdio)h *<

Capitolul 12 Funcii standard

264

redenume=te un fi=ier. ntoarce 0 ]n caz de succes =i o valoare diferit[ de 0 ]n caz de eroare.


int rand("oid); <* fisier header stdli%)h *<

]ntoarce un num[r ]ntreg uniform aleator din intervalul D0,,4*E_F4GH.


int srand(unsigned int seed); <* fisier header stdli%)h *<

ini\ializeaz[ generatorul de numere aleatoare cu valoarea seed.


"oid >sort("oid *%uf, size_t nr, size_t lung, int(*cmp)(const "oid *arg!, const "oid *arg5)); <* fisier header stdli%)h *<

sorteaz[ ]n ordine cresc[toare tabloul %ufD0H,%ufD!H, I,%ufDnr !H folosind metoda Juick1ort. /arametrul lung reprezint[ m[rimea ]n octe\i a fiec[rui element. *unc\ia de comparare este *cmp =i trebuie s[ ]ntoarc[ o "aloare60 dac[ arg!6arg5 o "aloare70 dac[ arg!7arg5 o "aloare80 dac[ arg!8arg5
"oid %search(const "oid *cheie, const "oid *%uf, size_t nr, size_t lung, int(*cmp)(const "oid *arg!, const "oid *arg5)); <* fisier header stdli%)h *<

caut[ ]n tabloul ordonat %ufD0H,%ufD!H,I,%ufDnr !H ] ntorc0nd un pointer c[tre primul membru care corespunde c$eii indicat[ de c$eie, ]n caz de succes, sau -.++ ]n caz contrar. !emnifica\ia parametrilor este cea descris[ la func\ia >sort().

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

  • Versiondog CH
    Versiondog CH
    Document7 pagini
    Versiondog CH
    Barosz
    Încă nu există evaluări
  • Capitol Ul 10
    Capitol Ul 10
    Document20 pagini
    Capitol Ul 10
    Barosz
    Încă nu există evaluări
  • Instructiuni Instalare
    Instructiuni Instalare
    Document2 pagini
    Instructiuni Instalare
    Barosz
    Încă nu există evaluări
  • Sub
    Sub
    Document3 pagini
    Sub
    Barosz
    Încă nu există evaluări
  • Capitol Ul 9
    Capitol Ul 9
    Document13 pagini
    Capitol Ul 9
    Barosz
    Încă nu există evaluări
  • Adresgfha Service Samsung
    Adresgfha Service Samsung
    Document1 pagină
    Adresgfha Service Samsung
    Barosz
    Încă nu există evaluări
  • Sesiune Examene-1
    Sesiune Examene-1
    Document1 pagină
    Sesiune Examene-1
    Barosz
    Încă nu există evaluări
  • Versiondog - AP - Ro
    Versiondog - AP - Ro
    Document27 pagini
    Versiondog - AP - Ro
    Barosz
    Încă nu există evaluări
  • Sub
    Sub
    Document3 pagini
    Sub
    Barosz
    Încă nu există evaluări
  • ADA Layout Manual
    ADA Layout Manual
    Document8 pagini
    ADA Layout Manual
    Annemarie Hansen
    Încă nu există evaluări
  • Plante
    Plante
    Document1 pagină
    Plante
    Barosz
    Încă nu există evaluări
  • Capitol Ul 7
    Capitol Ul 7
    Document26 pagini
    Capitol Ul 7
    Barosz
    Încă nu există evaluări
  • Tipuri de Traductoare
    Tipuri de Traductoare
    Document20 pagini
    Tipuri de Traductoare
    alexandra_dutescu
    100% (2)
  • Functionare Turbosuflanta
    Functionare Turbosuflanta
    Document3 pagini
    Functionare Turbosuflanta
    Alex
    Încă nu există evaluări
  • Capitol Ul 13
    Capitol Ul 13
    Document17 pagini
    Capitol Ul 13
    Barosz
    Încă nu există evaluări
  • Capitol Ul 11
    Capitol Ul 11
    Document14 pagini
    Capitol Ul 11
    Barosz
    Încă nu există evaluări
  • Capitol Ul 3
    Capitol Ul 3
    Document43 pagini
    Capitol Ul 3
    Barosz
    Încă nu există evaluări
  • Capitol Ul 6
    Capitol Ul 6
    Document18 pagini
    Capitol Ul 6
    Barosz
    Încă nu există evaluări
  • Capitol Ul 4
    Capitol Ul 4
    Document38 pagini
    Capitol Ul 4
    Barosz
    Încă nu există evaluări
  • Capitol Ul 2
    Capitol Ul 2
    Document13 pagini
    Capitol Ul 2
    Barosz
    Încă nu există evaluări
  • Capitol Ul 8
    Capitol Ul 8
    Document51 pagini
    Capitol Ul 8
    Barosz
    Încă nu există evaluări
  • Capitol Ul 5
    Capitol Ul 5
    Document16 pagini
    Capitol Ul 5
    Barosz
    Încă nu există evaluări
  • Capitol Ul 1
    Capitol Ul 1
    Document8 pagini
    Capitol Ul 1
    Barosz
    Încă nu există evaluări
  • Capitolul 4 ISSC
    Capitolul 4 ISSC
    Document15 pagini
    Capitolul 4 ISSC
    Barosz
    Încă nu există evaluări
  • Capitolul 3
    Capitolul 3
    Document21 pagini
    Capitolul 3
    baratkyy5555
    100% (1)
  • Teorie Masurare Debite
    Teorie Masurare Debite
    Document38 pagini
    Teorie Masurare Debite
    Razvan Preda
    Încă nu există evaluări
  • Capitolul 1 - Cibernetica
    Capitolul 1 - Cibernetica
    Document36 pagini
    Capitolul 1 - Cibernetica
    alexandru_roman_9
    Încă nu există evaluări
  • Mat A
    Mat A
    Document1 pagină
    Mat A
    Barosz
    Încă nu există evaluări
  • Reprez Grafica
    Reprez Grafica
    Document1 pagină
    Reprez Grafica
    Barosz
    Încă nu există evaluări