słowa liczone w pliku, takie jak polecenie linux wc w C

Próbuję napisać coś, co działa jak polecenie Linux wc, aby policzyć słowa, nowe linie i bajty w dowolnych plikach i mogę używać tylko odczytanej funkcji C. Napisałem ten kod i otrzymuję poprawne wartości dla wierszy i bajtów, ale nie otrzymuję poprawnej wartości dla policzonych słów.

int bytes = 0;
int words = 0;
int newLine = 0;
char buffer[1];
int file = open(myfile,O_RDONLY);
if(file == -1){
  printf("can not find :%s\n",myfile);
}
else{
  char last = 'c'; 
  while(read(file,buffer,1)==1){
    bytes++;
    if(buffer[0]==' ' && last!=' ' && last!='\n'){
      words++;
    }
    else if(buffer[0]=='\n'){
      newLine++;
      if(last!=' ' && last!='\n'){
        words++;
      }
    }
    last = buffer[0];
  }        
  printf("%d %d %d %s\n",newLine,words,bytes,myfile);        
} 

questionAnswers(2)

yourAnswerToTheQuestion