Witam pracując z książką "Jezyk C programowanie" spotykam tam kolejny program z kolei ,ktory po przepisaniu nie funkcjonuje poprawnie (mysle tak bo na wyjsciu po wcisnieciu enter pojawia sie popsostu to co napisalem , a tak to dzialac nie powinno) Uzywam Code Blocksa i normalnie tworze pusty projekt , dodaje plik z rozszerzeniem.c
Wpisujac taki oto program
#include <stdio.h>
#define wewnatrz_slowa 1 //wewnatrz slowa
#define poza_slowem 0 // poza slowem
int main ()
{
//state-sprawda czy funkcja getchar pobiera znaki nalezace do pewnego slowa
int c,nowa_linia,nowe_slowo,nowe_spacje,state;
state=poza_slowem;
nowa_linia=nowe_slowo=nowe_spacje=0;
while((c=getchar()) !=EOF)
{
++nowe_spacje;
if(c=='\n')
++nowa_linia;
if(c =='\ ' || c =='\n' || c =='\t')
state=poza_slowem;
else if (state==poza_slowem)
{
state=wewnatrz_slowa;
++nowe_slowo;
}
//nl-nowa linia,nw-nowe slowo,nc-nowe spacja
}
printf("Kolejne linie %d Kolejne slowa %d Kolejne spacje %d \n",nowa_linia,nowe_slowo,nowe_spacje);
}
Sposób na wyświetlanie danych jest prosty, ponieważ wystarczy tylko dokonać takiej zmiany
#include <stdio.h>
#define wewnatrz_slowa 1 //wewnatrz slowa
#define poza_slowem 0 // poza slowem
int main ()
{
//state-sprawda czy funkcja getchar pobiera znaki nalezace do pewnego slowa
int c,nowa_linia,nowe_slowo,nowe_spacje,state;
state=poza_slowem;
nowa_linia=nowe_slowo=nowe_spacje=0;
while((c=getchar()) !=EOF)
{
++nowe_spacje;
if(c=='\n')
++nowa_linia;
if(c =='\ ' || c =='\n' || c =='\t')
state=poza_slowem;
else if (state==poza_slowem)
{
state=wewnatrz_slowa;
++nowe_slowo;
}
//nl-nowa linia,nw-nowe slowo,nc-nowe spacja
printf("Kolejne linie %d Kolejne slowa %d Kolejne spacje %d \n",nowa_linia,nowe_slowo,nowe_spacje);
}
}
i już wszystko działa , no poza faktem ze konsola jest wypelniana każda pojedyncza spacja bądź tez znakiem nowej linii
Moje pytanie polega na tym , czy twórca celowo zrobił to jak zrobił czy tez błąd leży gdzieś indziej.
Dziękuje za poświęcony czas i zapraszam do dyskusji .