[ Pwnage @ 31.12.2009. 11:41 ] @
Code:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    /*Write a program to count blanks, tabs and newlines.*/
    
    int c;
    
    int blanks, tabs, nl;
    blanks = tabs = nl = 0;
    
      while((c=getchar())!=EOF)
      {
          if(c==' ')
          blanks++;
        
          else if(c=='\t')
          tabs++;
        
          else if(c=='\n')
          nl++;
      }
    
    
     printf("\nBlanks: %d\nTabs: %d\nNewlines: %d\n\n", blanks, tabs, nl);
    
     getchar();    
     return 0;
}


Pozz ljudi imam problem , evo ovaj kod on broji blank(prazna polja) , newline(nove linije) i tabs...
i sve razumijem int , if , else if i to... ali me ovo EOF uvijek zeza moze mala pomoc...
while((c=getchar())!=EOF)
c=getchahr to znam to je jedinica/znak koji sljedeci bude unesen u tipkovnici dobi ce vrijednost c
i razumijem while petlju... dok c=getchar nije jednako(!=) EOF(end of file) radi sljedecu naredbu ( a to je brojanje blanks,newlinesa i tabsa) .... ali ja ovo End Of File (EOF) neshvacam dok c=getchar nije jednako cemu sta je EOF?
moze mi neko malo pojasnit taj red while((c=getchar())!=EOF)... thanks
[ Picsel @ 31.12.2009. 11:59 ] @
Prvo se izvrsava
c=getchar() --- c prima vrednost unetog karaktera, kao sto si i rekao.
Kada promenljiva c dobije vrednost, onda se proverava da li je c!=EOF, to jest da li je vrednost promenljive c razlicita od EOF karaktera. EOF je karakter kao i 'a',' ','\n' itd. Na DOS-u (odnosno komandnoj liniji) EOF karakter ima ascii vrednost 26 i dobija se kombinacijom CTRL+Z. Na Unixu je ascii vrednost EOF karaktera 4 i dobija se pomocu CTRL+D.
U svakom slucaju, EOF oznacava kraj unosa, odnosno kada korisnik unese EOF karakter, zavrsava se while petlja.
[ Eurora3D Team @ 04.01.2010. 20:32 ] @
Mogao si da proveris ovako
Code:

int c;
c = EOF;
printf("EOF == %i", c);

ili samo
Code:

printf("EOF == %i", EOF);