Functii de biblioteca

Funcţia printf
Funcţia printf converteşte, formatează şi tipăreşte argumentele sale la ieşirea standard sub controlul şirului de control.
Formatul general al acestei instrucţiuni este:

printf(control,argi, arg2, ...argn);

control este un şir de caractere ce conţine 2 tipuri de obiecte:
• caractere ordinare care sunt simplu copiate în şirul de ieşire
• semnificaţii de conversie care cauzează conversia şi tipărirea următoarelor argumente succesive ale lui printf

Fiecare specificaţie de conversie este introdusă prin caracterul % şi încheiată prin caracterul de conversie. între caracterul % şi caracterul de conversie pot apărea:
• semnul minus care specifică cadrarea la stânga în câmp a argumentului convertit
• un şir de cifre care specifică dimensiunea minimă a câmpului în care se editează data. Numărul convertit va fi introdus în câmp pe cel puţin această lungime sau mai mare dacă este necesar. Dacă data necesită mai puţine poziţii decât câmpul descris de acest şir atunci el va fi complectat la stânga cu caractere nesemnificative (sau la dreapta dacă s-a folosit semnul minus în specificatorul de format respectiv). Caracterele nesemnificative implicite sunt spaţiile. Dacă şirul de cifre începe cu un zero nesemnificativ, caracterele nesemnificative vor fi zerouri.
• punctul separă şirul de cifre ce defineşte dimensiunea minimă a câmpului de şirul următor de cifre ce semnifică precizia
• un şir de cifre ce defineşte precizia care specifică numărul maxim de caractere acceptate dintr-un şir de caractere sau numărul de zecimale care se vor scrie în cazul numerelor reale.

Deci semnificaţiile de conversie au structura:

%[-][sir_de_cifre][.][sir_de_cifre]c

Exemple:
“%5f” arată ca numărul are o lungime de cel puţin 5 caractere
“%05d” determină umplerea cu zerouri a unui număr mai mic de 5 cifre, astfel încât lungimea totală să fie 5
“%.2f” solicită două poziţii după punctul zecimal, dar lungimea lui nu este supusă restricţiilor
“%-5.2f” determină afişarea pe cel puţin 5 poziţii din care exact 2 zecimale aliniat la stânga (datorită prezentei semnului “-“)
“%.of” suprimă tipărirea părţii fracţionare
“%5.10s” determină afişarea unui şir pe cel puţin 5 poziţii dar nu mai mult de 10 caractere
“%%” determină afişarea caracterului %


printf("Folosim%n caracterul %%n",&p);
//determină încărcarea în variabila pointată de pointerul p a
//valorii 7 ("Folosim" are 7 litere)

Funcţia scanf
Citeşte date de la intrarea standard pe care le converteşte în format intern conform specificatorilor.
Prototipul funcţiei scanf se găseşte în headerul stdio.h şi are forma:

int scanf(const char *sir, van, var2,... varn);

Funcţia scanf returnează numărul câmpurilor citite sau EOF dacă se întâlneşte prematur marca de sfârşit de fişier. Şirul de control poate conţine 3 tipuri de obiecte: specificatori de format, caractere albe sau alte caractere. Specificatorul de format este precedat de caracterul % şi specifică tipul valorii ce urmează a fi citite. Aceştia sunt identici cu cei prezentaţi la funcţia printf. Un caracter alb în şirul de control determină neglijarea unuia sau mai multor caractere albe din intrare. Un caracter care nu este alb determină ca scanf să citească şi să neglijeze caracterul respectiv din intrare.

Exemplu:

//determină citirea unui întreg, apoi a caracterului virgulă care se
//neglijează şi în final citirea unui alt întreg
scanf("%d","%d",&a,&b);

Funcţii de citire/scriere caractere

int getchar(void)

Prototip: stdio.h
Efect: Funcţia aşteaptă apăsarea unei taste citind de la intrarea standard codul ASCII al caracterului din poziţia curentă şi returnând codul ASCII al acestuia (tipul valorii returnate este int) sau constanta simbolică EOF dacă s-a întâlnit marca de sfârşit de fişier (perechea CTRL/Z). Tasta apăsată are automat ecou pe ecran.

Exemplu:
Se citeşte de la tastatură câte un caracter până la întâlnirea caracterului sfârşit de rând. Să se scrie programul C care determină numărul de apariţii al fiecărei cifre în şirul de caractere.

#include "stdio.h"
void main(void)
{
  int a[10],i,n;
  //iniţializăm cu o elementele şirului a care vor păstra numărul de apariţii al fiecărei
  //cifre; a[0] va conţine numărul de apariţii al cifrei 0... a[9] pentru cifra 9
  for(i=0;i<10;a[i++]=0);   //citim caracter după caracter până la întâlnirea caracterului sfârşit de rând; citirea   //caracterelor are loc doar după apăsarea tastei enter   while((n=getchar())!="\n")     if((n-"0" >= 0)&&(n-"0" <= 9)) a[n-"0"]++;   //în cazul în care codul ASCII se găseşte între codul al cifrei o şi codul ASCII al   //cifrei 9 caracterul citit este cifră şi se incrementează poziţia corespunzătoare din   //şirul a   for(i=0;i<10;i++)     if(a[i]) printf("Cifra %d apare de %d ori\n",i,a[i]);   //vom afişa doar cazurile diferite de o apariţii } int putchar(int c)

Funcţii de conversie

int atoi(const char *s);
Efect: converteşte şirul s din ASCII într-o valoare întreagă

long atol(const char *s);
Efect: converteşte şirul s din ASCII în întreg lung

double atof(char *s);
Efect: converteşte şirul s din ASCII într-o valoare reală (dublă precizie)

Funcţii generatoare de numere aleatoare

int rand(void);

Efect: returnează un întreg pseudoaleator între o şi RAND_MAX. Pentru majoritatea compilatoarelor C această constantă este egală cu valoarea maximă cu semn reprezentabilă pe un cuvânt al sistemului de calcul.

void srand(unsigned int i);

Efect: iniţializează generatorul de numere aleatoare cu valoarea i pentru o nouă secvenţă de întregi pseudoaleatori care vor fi returnaţi de funcţia rand(). Aceste secvenţe se repetă dacă funcţia srand() se iniţializează cu aceeaşi valoare i.

Funcţii pentru operaţii cu caractere şi şiruri de caractere
Tipul predefinit destinat în C lucrului cu caractere este tipul char. Spaţiul de memorie asociat variabilelor de acest tip este 1 octet şi se memorează ca numărul întreg corespunzător codului ASCII al caracterului respectiv. Prin urmare, în C, un caracter poate apărea în operaţii numerice.

Prototipurile funcţiilor care operează asupra caracterelor sunt:
int isalpha(int c) – returnează o valoare nenulă dacă c este literă [“A”-“Z”,”a”-“z”]
int isdigit(int c) – returnează o valoare nenulă dacă c este cifră [0-9]
int isalnum(int c) – returnează o valoare nenulă dacă c este literă sau cifră
int isasciifint c) – returnează o valoare nenulă dacă c este un caracter ASCII valid
int iscntrl(int c) – returnează o valoare nenulă dacă c este un caracter de control valid
int isprintfint c) – returnează o valoare nenulă dacă c este un caracter afişabil (inclusiv spaţiu)
int isentri(int c) – returnează o valoare nenulă dacă c este un caracter de control valid
int isupper(int c) – returnează o valoare nenulă dacă c este literă mare
int islower(int c) – returnează o valoare nenulă dacă c este literă mică
int isspace(int c) – returnează o valoarea nenulă dacă c este caracter alb (spaţiu, tab sau retur de car)
int ispimct(int c) – returnează o valoare nenulă dacă c este un caracter de punctuaţie
int isspace(int c) – returnează o valoare nenulă dacă c este un caracter alb (spaţiu, tab, retur de car, tab vertical sau form feed)
int isxdigit(int c) – returnează o valoare nenulă dacă c este un caracter hexagesimal (cifra sau caracter a -> f, A -> F)
int toupper(int c) – returnează litera majusculă care corespunde caracterului c
int tolower(int c) – returnează litera mică care corespunde caracterului c

Leave a Reply

Your email address will not be published. Required fields are marked *

three × five =

Time limit is exhausted. Please reload CAPTCHA.