90 likes | 288 Views
1. Redirekcija Ulazno-izlazni uređaji i programski jezik C. Standardni ulazno-izlazni uređaji (tastatura i ekran) se tretiraju kao datoteke koje se automatski otvaraju za svaki program.
E N D
1. Redirekcija Ulazno-izlazni uređaji i programski jezik C. Standardni ulazno-izlazni uređaji (tastatura i ekran) se tretiraju kao datoteke koje se automatski otvaraju za svaki program. Ulaz sa tastature se tretira kao tok podataka nazvan stdin, a izlaz na ekran kao tok podataka nazvan stdout. Funkcije getchar(), putchar(), printf() iscanf()su deo standardnog ulazno-izlaznog paketa i one operišu nad ovim tokovima. Način rada sa standardnim ulazom-izlazom je isti kao i rad sa ma kojim datotekama, tj. obrada ulazno-izlaznih podataka je jednoobrazna. Prilikom rada sa datotekama često je potrebno naznačiti kraj datoteke. za te svrhe se koristi kombinacija tastera CTRL/Z. (Z).
Kod nekih Unix-sistema za kraj fajla koriti se kombinacija CTRL/D na početku linije. U programu se može koristiti konstanta EOF (definisana u biblioteci stdio.h) za prepoznavanje kraja fajla. Umesto da učitavamo podatke sa standardnog ulaza, možemo zahtevati da se podaci učitavaju iz ma koje datoteke. Slično, možemo zahtevati da se štampanje izvrši u neku datoteku, a ne na standardni izlaz. Proces preusmeravanja ulaza/izlaza naziva se redirekcija. Redirekcija se vrši sa komandne linije pomoću simbola < i > (operativni sistemi DOS i Unix). Kopira.cpp Demonstracija redirekcije. Pomoću operatora>> mogu se dodati podaci na kraj fajla. Pomoći operatora | (pipe) može se spojiti izlaz jednog programa sa ulazom drugog.
2. Argumenti sa komandne linije Već smo videli da se izvršni oblik C-programa može startovati sa komandne linije. Sa komandne linije se mogu zadati i argumenti programu. Pošto je main() funkcija, može imati argumente. Ali pošto je reč o specijalnijoj funkciji, može imati samo 0 ili 2 argumenta. (Neke implementacije dozvoljavaju i više, ali to nije prema standardu.) Do sada smo main koristili sa 0 argumenta. Ako se navedu 2 argumenta, prvi predtsvlja broj stringova u komandnoj liniji (tradicionalno se označava sa argc, ali ne mora tako), a drugi argument je niz stringova. Stringovi u 2. argumentu se razdvojaju blanko-simbolom. String sa indeksom 0 je ime samog programa.
KomArgs.cpp Za deklaraciju zaglavlja main-funkcije može se koristiti i pokazivačka verzija: int main(int brarg, char **niske) Ako želimo da u string uključimo blanko-simbol, kod većine implementacija dozvoljeno je korišćenje navodnika za odvajanje stringova. Spoj.cpp Provera.cpp
3. Konverzija stringova u brojeve Brojevi mogu biti zapisani (smešteni u memoriju) kao numerički podatak (potpuni komplement ili u obliku pokretne tačke) ili kao stringovi. Broj 452 se može predstaviti kao string koji se sastoji iz znakova: ‘4’, ‘5’, ‘2’ i’\0’. Pri računanju, poređenju, ... brojevi moraju biti u numeričkom obliku, ali pri štampanju se koristi stringovni zapia. (Opis %d prevodi numeričku vrednost u stringovni.) Ako želimo da prevedemo ceo broj zapisan kao string (na primer, učitan sa komandne linije) u numeričku vrednost, koristi se fujnkcija atoi() (for alphanumeric to integer). Ona ima string kao argument i vraća celobrojnu vrednost. Ova funkcija se nalazi u biblioteci stdlib.h i ova biblioteka treba da bude uključena ako se koristi funkcija atoi().
Sabstr.cpp U stdlib.h su uključene i deklaracije funkcija atof() i atol()koje služe za prevođenje stringa u double, odnosno,long tip. Način arada sa ovim funkcijama je sličan kao i s afunkcijim atoi(). U C-u se mogu koristiti sofistiranije funkcije za ove svrhe: strtol()- prevodi string u long, strtoul()– prevodi string u unsigned long strtod()– prevodi string u double. Ove funkcije prepoznaju i prijavljuju prvi karakter u stringu koji nije deo broja. Takođe, strtol() i strtoul() omogućavaju da se navede osnova brojnog sistema. Na primer, funkcija strol() ima sledeći prototip: long strtol(const char *nptr, char **endptr, int base); Ovde se može koristiti baza brojevnih sistema do 36. Dugistr.cpp Mnoge implementacije C-a sadrže funkcije itoa()iftoa() za prevođenje numeričkih vrenosti (celobrojnih i u pokretnoj tački) u stringove, ali one nisu funkcije standardne ANSI C-biblioteke. Radi ostvarenja kompatiblinosti, bolje je koristiti funkciju sprintf().