Documente Academic
Documente Profesional
Documente Cultură
PROGRAMAREA CALCULATOARELOR
Curs nr. 5
scanf
q Prototipul funcției (din stdio.h):
q unde:
q format - șir de caractere care indică în ce fel trebuie citite datele
q adr1, adr2 – adresele locațiilor de memorie unde se vor stoca
valorile citite (adresa unei variabile: &<nume_variabilă>)
q returnează o valoare
scanf
q Formatul:
q %[lățime][h|l|ll|L]tip_char
q lățime – dimensiunea maximă a câmpului citit
q tip_char: s, d, f, c
q Exemple:
q %4d
q %f
q %lf
q %[…..]
q %[^....]
1
q Citirea se oprește la:
q atingerea lăţimii
q următorul caracter din şir care nu se potriveşte cu formatul
q următorul caracter din şir care nu există în mulţimea de căutare
scanf - exemplu
#include <stdio.h>
int main(void)
{
int nr;
int a=10, b=20, c=30;
nr = scanf("%d%d",&a,&b);
printf("1 nr = %d\n",nr);
printf("1 a = %d, b = %d\n",a,b);
scanf - exemplu
nr = scanf("%c",&c);
printf("2 nr = %d\n", nr);
printf("2 c = %c", c);
return 0;
}
2
scanf
OBSERVAŢII:
Pentru formatul %d, scanf ignoră spaţiile albe din faţa datei şi
pune înapoi în buffer spaţiile albe care au determinat
terminarea unei date(' ', '\t', '\n', '\r')
scanf - exemplu
int citireVector2(int a[], int dimMax)
{
int n = 0;
int valoareReturnata;
scanf - exemplu
#include <stdio.h>
int main(void)
{
….........
int a[20];
int n;
n=citireVector2(a,20);
afisareVector(a, n);
...............
return 0;
}
3
printf
q Prototipul funcției:
int printf(format, var1, var2, …);
q unde:
q format este un șir de caractere care specifică modul în care vor fi
scrise informațiile
q var1, var2, … - nume (identificatori) de variabile ale căror valori
vor fi scrise (pe monitor sau într-un fișier)
q returnează o valoare
printf
q Forma generală a formatului:
q %[flags][width][.prec][h|l|ll|L]tip_char
printf - exemplu
x = ( 24, 31, 29)
4
Operaţii de intrare – ieşire pentru caractere şi
şiruri de caractere
int getchar(void);
int putchar(int c);
5
Exemplu
#include <stdio.h>
int main(void)
{
int c;
int numarLinii = 0;
c = getchar();
while(c != EOF)
{
if (c == '\n')
{
numarLinii = numarLinii + 1;
}
c = getchar();
}
printf("S-au introdus %d linii.\n", numarLinii);
return 0;
}
6
char sir[42];
int lung;
fgets(sir, 41, stdin);
puts(sir);
fputs(sir, stdout);
puts(“Test”);
sir[lung-1] = ‘\0’;
puts(sir);
fputs(sir. stdout);
puts(“Test”);
PC Curs nr. 5 - 2018 19
q Expresie:
q O secvenţă de operatori şi operanzi
q O expresie are un tip care coincide cu tipul valorii rezultatului.
Operatori
În funcţie de operaţia realizată:
ü aritmetici
ü incremetare şi decrementare
ü relaţionali
ü logici
ü logici la nivel de bit
ü atribuire
ü accesul la date şi dimensiune
7
Expresii și operatori aritmetici
Operanzi:
constante, variabile, funcţii, elemente de tablou, subexpresii,
membrii unei structuri
Operatori:
1. unari (prefixaţi): +, -
2. binari (infixaţi): *, /, %
+, -
Observaţii:
1. dacă cei doi operanzi sunt de acelaşi tip, atunci tipul rezultatului
coincide cu tipul celor doi operanzi
4/3 à ?
4./3. à ?
2. Priorităţi:
+ - à unari
* / %
+ - à binari
8
Conversii
1. implicite
char, enum à int
se face conversia la tipul prioritar
T + long double à long double
T + double à double
T + float à float
T + unsigned long à unsigned long
long + unsigned int à unsigned long
T + long à long
unsigned int + int à int (dacă se poate) sau
unsigned int
à int
https://overiq.com/c-programming
/101/implicit-type-conversion-in-c/
Conversii
2. explicite
Folosirea operatorului de conversie (operatorul cast).
Forma generală:
(tip)operand
Exemplu:
short int a = 31564, b = 5130;
long int c;
c = (long)a + b;
printf("c = %ld",c);
// c = 36694
9
q Acest curs a fost despre:
q funcții de I/E cu dispozitivele standard
q expresii și operatori aritmetici
10