[ zero_man @ 02.04.2014. 21:16 ] @
Pozdrav svima,
nov sam na forumu a programiranje u c-u sam poceo da ucim pre jedno 3meseca, pa sad imam jedno pitanje:)

Naime interesuje me kako printf i scanf funkcije rade "ispod haube" ili ti internally.
Znam da su ove funkcije iz biblioteke stdio.h i znam sta rade i kako se koriste, ali ne mogu da shvatim na koji nacin funkcija printf stampa tekst na ekranu.
Da li su ove funkcije napisane u c-u kao sto sam negde procitao ili su kreirane uz pomoc asemblera.
Ono sto me zapravo interesuje na koji naci c-program prihvata ulaz napr. sa tastature ili kako stampa karaktere na ekranu, da li prosledi niz karaktera operativnom sistemu pa sam os to obavi ili na neki drugi nacin.
[ Odin D. @ 02.04.2014. 21:33 ] @
Sav pristup hardveru (na PC masinama) ide preko OS-a.
OS obezbedjuje korisnickim programima pristup tim resursima preko odgovarajucih servisa (ili kako se to vec naziva).

U tom smislu, printf ne ispisuje nista direktno na ekran vec na odgovarajuci nacin prosledi OS-u sta i kako zeli da ispise, a dalje se o tome brine OS.
Isti slucaj i za obrnuti smijer, scanf npr.

Interne realizacije tih funkcija zavise od platforme, konkretnog proizvodjaca biblioteke/kompajlera itd.
[ the_tosic @ 02.04.2014. 21:38 ] @
Na ulaz i izlaz mozes da gledas kao na fajlove.
Kada u C-u radis printf, scanf zapravo radis fprintf(stdout, ...) ili fscanf(stdin...)
Ti "fajlovi" su mapirani na nesto (shell) na operativnom sistemu.

Mislim da je ceo C stdlib napisan u C-u, osim sistemskih poziva koji su u asembleru, ali je to zanemarljivo mali deo koda.
npr putc() koji stavlja karakter u neki fajl poziva operativni sistem za to.

Ako te zanima "sors" printf-a

glibc
https://sourceware.org/git/?p=...8898950da8e3fa5f247390;hb=HEAD

i "prostija" verzija:
http://www.sparetimelabs.com/tinyprintf/tinyprintf.php

*PS. ovo je uproscen pogled na stvari