Problem z wyswietlaniem danych na wyjsciu

0

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 .

1

Zacznij od zapoznania się z przekierowaniem:
mojprogram.exe <wejscie.txt >wyjscie.txt odpalać z konsoli

0

To znaczy w konsoli windowsa(przez cmd) czy konsoli code block ?

0
uinqen napisał(a):

To znaczy w konsoli windowsa(przez cmd) czy konsoli code block ?

Aktualnie doszedł kolejny problem , w momencie odpalenia pliku exe przez cmd dostaje komunikat o uszkodzonym pliku libgcc_s_dw2-1.dll

1 użytkowników online, w tym zalogowanych: 0, gości: 1