cool web a perfektni rs- Doporucuji

Wednesday, October 03, 2007

putchar

(c)
Tato funkce vytiskne obsah promenne c na nejake medium-obycejne na obrazovku. Volani funkce putchar a printf muzeme kombinovat; vystup se objevi v tomto poradi, jak byly funkce volany. Stejne jako v pripade funkce printf neni na funkcich getchar a putchar nic magickeho. Nejsou soucasti jazyka C, ale jsou z neho dosa- zitelne.
Kopirovani souboru
Znate-li funkce getchar a putchar, muzete napsat mnoho uzi- tecnych programu, aniz budete vedet neco dalsiho o operacich vstupu a vystupu. Nejjednodussim prikladem je program, ktery kopiruje vstup do vystupu po jednom znaku. Vyvojove schema vypada takto:
precti znak
while (znak neni symbol pro konec souboru)
vypis znak
precti dalsi znak
Program v jazyku C bude vypadat takto:
main () /*kopirovani vstupu na vystup: 1.verze*/
{
int c;
c = getchar();
while (c != EOF)
{
putchar (c);
c = getchar();
}
}

Operator != znamena "nerovna se". Hlavnim problemem je zjistit, byl-li nacten konec vstupu. Obvykle je dano konvenci, ze kdyz funkce getchar narazi na ko- nec vstupu, tak vraci hodnotu, ktera neni normalnim platnym znakem. Jediny, ale zanedbatelny problem je to, ze existuji dve konvence pro indikaci konce souboru. My jsme se teto neprijem- nosti vyhnuli tim, ze pouzivame symbolicke jmeno EOF pro hod- notu "konec souboru", at uz je jakakoliv. V praxi je EOF bud rovna -1 nebo 0, a proto musi byt na zacatku programu definice
#define EOF -1
nebo
#define EOF 0
Pouzitim symbolickeho jmena EOF, ktere reprezentuje hodnotu funkce getchar pro nacteni konce vstupu, jsme si zajistili, ze jen jedina radka v programu zavisi na konkretni ciselne hodnote. Soucasne musime deklarovat promenou c typu int, ne c h a r, aby mohla obsahovat hodnotu jakou funkce getchar vraci. Jak potom uvidime v kapitole 2, tato funkce je skutecne typu int, protoze musi byt schopna vracet nejen znaky, ale take repre- zentaci symbolu EOF.Ő.po 3
Program pro kopirovani muze byt zkusenejsimi programatory v jazyku C napsan strucneji. V tomto jazyku muze byt kazdy pri- kaz, jako napr.
c = getchar()
pouzit ve vyrazu, jehoz hodnota je proste rovna hodnote, ktera je prirazovana leve strane vyrazu. Jestlize je prirazeni znaku promenne c vlozeno na pozici podminky v prikazu while, tak program pro kopirovani souboru muze byt napsan takto:
main /* kopirovani vstupu ve vystup 2.verze */
{
int c;
while((c = getchar()) != EOF)
putchar (c);
}