*** Unos i prikaz podataka - malo drugačije objašnjeno ***
Unos i prikaz podataka
- U C-u ne postoje posebne naredbe za ulaz/izlaz podataka.
- Postoji skup bibliotečkih funkcija za učitavanje podataka u program i za upis rezultata na standardni izlaz ili u datoteku ( scanf i printf ).
- Deklaracije funkcija za upravljanje ulaznim/izlaznim resursima u C-u nalaze se u fajlu stdio.h
- Pre korišćenja funkcija za ulaz/izlaz podataka u fajl sa izvornim kodom treba uključiti fajl stdio.h
- Za uključivanje jednog fajla u drugi koristi se pretprocesorska direktiva include
Format include direktive:
1 |
#include <ime_fajla> ili #include "ime_fajla"
|
Konkretno, kad god se u programu koriste funkcije scanf ili printf, treba navesti:
1 |
#include <stdio.h>
|
scanf() - Funkcija za učitavanje podataka sa standardnog ulaza
Poziva se na sledeći način:
scanf(<format>,<adr_ul_podatka1> [,<adr_ul_podatka2>]…)
gde je:
<format> - Znakovni niz koji predstavlja definiciju konverzija koje treba izvršiti pri unosu podataka.
- Svi ulazni podaci se učitavaju kao niz ASCII kodova.
- Format definiše kako će se taj znakovni niz konvertovati u podatke odgovarajućeg tipa.
- Svaka pojedinačna konverzija u ovom znakovnom nizu:
- počinje znakom % i
- završava se slovom koje označava vrstu konverzije.
& - adresni operator
&a – adresa promenljive a
Format pojedinačne ulazne konverzije:
%[w][h|l|L]<tip_konverzije>
Tip konverzije može biti:
d – decimalna konverzija (rezultat je tipa int),
u – decimalna konverzija neoznačenih brojeva (rezultat je tipa unsigned int),
o – oktalna konverzija (rezultat je tipa int),
x – heksadekadna konverzija (rezultat je tipa int),
i – decimalna, oktalna ili heksadekadna konverzija zavisno od zapisa pročitanog broja (rezultat je tipa int),
f – konverzija brojeva zapisanih u fiksnom zarezu u podatke tipa float,
e – konv. brojeva zapisanih u eksponencijalnom obliku u podatke tipa float,
g – konv. koja označava da se ulazni znakovni niz konvertuje u podatak tipa float, bez obzira da li je na ulazu broj zapisan u fiknom zarezu ili u eksponencijalnom obliku,
c – znakovna konverzija (rezultat je tipa char),
s – konverzija u znakovni niz (niz znakova između dva bela znaka što znači da učitani niz ne sadrži bele znake. Iza pročitanih znakova dodaje se ‘\0’)
Značenja prefiksa
w – ceo broj koji označava dozvoljeni broj znakova za podatak u ulaznom nizu.
h – prefiks koji se koristi ispred celobrojnih konverzija i označava da se vrši konverzija ulaznog znakovnog niza u kratki ceo broj (rezultat je tipa short int),
l – prefiks koji se koristi ispred celobrojnih i realnih tipova konverzija i označava da se vrši konverzija ulaznog znakovnog niza u dugi ceo broj, ili u realni broja u dvostrukoj tačnosti (rezultat je tipa long int ili double),
L – prefiks koji se koristi samo ispred realnih tipova konverzija koji označava da se vrši konvertovanje ulaznog znakovnog niza u podatak tipa long double.
Primeri:
1 2 3 4 5 |
int a; unsigned b; float x, y; long double z; scanf("%d%u%f%e%Lf", &a, &b, &x, &y, &z); |
printf() - Funkcija za prikaz rezultata na standardni izlaz
Poziva se na sledeći način:
printf(<format>[,<izraz1>][,<izraz>]…)
gde je:
<format> - Znakovni niz koji predstavlja definiciju konverzija koje treba izvršiti pri prikazu rezultata.
- U ovom slučaju, vrši se konvertovanje memorijskog zapisa podataka u izlazne znakovne nizove.
- Osim pojedinačnih konverzija, format može sadržati i dodatne komentare koji će pojasniti izlazne rezultate ili uticati na preglednost prikazanih rezultata.
Format pojedinačne izlazne konverzije:
%[-][+| ][#][w[.d]][h|l|L]<tip_konverzije>
gde prefiksi imaju sledeća značenja:
- označava da će se, ukoliko je dužina podatka manja od širine polja koje je predviđeno za prikaz podatka, vršiti poravnanje uz levu ivicu (po default-u vrši se desno poravnanje).
+ može da stoji isključivo ispred numeričkih konverzija i označava da će i ispred pozitivnih brojeva stajati njihov znak (+).
«blanko» - stoji takođe ispred numeričkih konverzija i označava da će se pri prikazu pozitivnih brojeva, na poziciji predviđenoj za znak broja pojaviti «blanko» znak.
# stoji ispred celobrojnih konverzija (o ili x) i označava da će se uz vrednost broja prikazati i oznaka brojnog sistema koji se koristi za prikaz (tj. ako se koristi o konverzija, broj ce početi nulom, a ako se koristi heksadekadna konverzija, broj će početi sa 0x).
w – ceo broj koji predstavlja širinu polja koje će se koristiti za prikaz podatka.
d – ceo broj koji ispred realnih podataka predstavlja broj cifara iza decimalne tačke, a ispred znakovnih nizova predstavlja maksimalni broj karaktera koji će biti ispisani.
h, l, i L – imaju isto značenje kao i kod ulazne konverzije.
w – ceo broj koji predstavlja širinu polja koje će se koristiti za prikaz podatka.
d – ceo broj koji ispred realnih podataka predstavlja broj cifara iza decimalne tačke, a ispred znakovnih nizova predstavlja maksimalni broj koji će biti ispisani.
h, l, i L – imaju isto značenje kao i kod ulazne konverzije.
Primer:
1 2 3 4 5 6 |
int a; unsigned b; float x, y; long double z; ... printf("a=%-5d, b=%-3u\nx=%-8.4f, y=%-+15.7e\n z=%Lf", a, b, x, y, z); |