Program precte znak, priradi ho promenne c a testuje, zda tento znak byl priznakem konce souboru. Jestlize nebyl, tak telo cyklu while je vykonano. Testovani se znovu opakuje. Kdyz se narazi na konec souboru, prikaz while, stejne jako funkce main, ukonci cinnost. Tato verze programu soustreduje vstup na jedno misto - nyni je uz jen jedno volani funkce getchar - a zkracuje text programu. Vlozeni prirazovaciho prikazu do testovaciho vyra- zu je jednou z moznosti, kdy jazyk C umoznuje vyznamne zkrace- ni textu programu. /Je mozne se o tuto moznost nestarat a a vytvaret "nevnorujici se" text programu, ale tomu se budeme snazit vyhybat./
Je dulezite si uvedomit, ze vlozeni prirazovaciho prikazu do zavorek je opravdu nezbytne. Priorita operatoru != je vyssi nez prirazeni = , z cehoz vyplyva, ze pri nepritomnosti zavo- rek bude prikaz != vykonan drive nez prirazeni =. Proto prikaz
c = getchar() != EOF
je shodny s prikazem
c = (getchar() != EOF)
To ma za nasledek to, ze promenne c bude prirazena hodnota 0 nebo 1 podle toho, zda funkce getchar narazila na konec sou- boru nebo ne /vice o teto problematice bude uvedeno v kapito- le 2/.
Pocitani znaku
Nasledujici program pocita znaky. Je to uprava programu pro kopirovani.
main() /*pocitani znaku na vstupu*/
{
long nc;
nc = 0;
while (getchar(), = EOF)
++nc;
printf("%1d\n",nc);
}
Ő.po 12
Je dulezite si uvedomit, ze vlozeni prirazovaciho prikazu do zavorek je opravdu nezbytne. Priorita operatoru != je vyssi nez prirazeni = , z cehoz vyplyva, ze pri nepritomnosti zavo- rek bude prikaz != vykonan drive nez prirazeni =. Proto prikaz
c = getchar() != EOF
je shodny s prikazem
c = (getchar() != EOF)
To ma za nasledek to, ze promenne c bude prirazena hodnota 0 nebo 1 podle toho, zda funkce getchar narazila na konec sou- boru nebo ne /vice o teto problematice bude uvedeno v kapito- le 2/.
Pocitani znaku
Nasledujici program pocita znaky. Je to uprava programu pro kopirovani.
main() /*pocitani znaku na vstupu*/
{
long nc;
nc = 0;
while (getchar(), = EOF)
++nc;
printf("%1d\n",nc);
}
Ő.po 12
Labels: c
<< Home