Program wypisujący słowa wejściowe w osobnych wierszach

0

Polecenie : Napisz program ktory kazde slowo wejsciowe wypisze w oddzielnym wierszu.

Zrobiłem to zadanie z tym że mój program ma jeden blad - jezeli odstep miedzy slowami to jedna spacja wtedy program wypisuje te slowa tak ze nie sa wyrownane do lewej strony konsoli.

Np dla:

Hello World
program przepisuje:

Hello 
 World

Jeśli wyrazy odzdziela wiecej spacji to nie ma z tym problemu. Proszę o sugestie.

#include <stdio.h>

main (void)
{
    char znak;
    int wiersze,spacje,slowa,slowo,znaki;
    wiersze = spacje = slowa = slowo = znaki = 0;


    while( (znak=getchar() )!=EOF)
    {

        if(znak==' ')
        {
            spacje ++;
        }
        else spacje=0;

if(znak!=' '&&znak!='\t'&&znak!='\n')
        {
            slowo = 1;
        }

         else
        {
           
            slowa+=slowo;
            slowo=0;
            printf("\n");
        }

          znaki ++;

        if(znak=='\n')
        {
            wiersze++ ;
        }


       if(spacje==1)  putchar(znak);

    }

    printf("Ilosc znakow: %d, Ilosc slow : %d, Ilosc wierszy : %d",znaki,slowa,wiersze);

    return 0;
}

dodanie znaczników <code> - @furious programming

0

Ten program w ogóle nie działa (aż się zdziwiłem czytając ten kod, potem uruchomiłem i wyszło :P).
Tu to co chciałeś zrobić po ludzku:

#include <stdio.h>
#include <ctype.h>

main (void)
{
    char znak;
    int odstep = -1;
    while( ( znak = fgetc( stdin ) ) != EOF || !feof( stdin ) ){
        if( isblank( znak ) ){
            if( odstep == 0 )  odstep = 1;
        } else {
            if( odstep == 1 )
                fputc( '\n', stdout );
            odstep = 0;
            fputc( znak, stdout );
        }
    }
    fputc( '\n', stdout );
    return 0;
}

a jeszcze lepiej (przy założeniu, że słowa nie przekraczają 200 znaków:

#include <stdio.h>

main (void)
{
    char bufor[200];
    while( scanf( "%200s", bufor ) == 1 )
        printf( "%s\n", bufor );
    return 0;
}

Swoją drogą, czemu wszyscy początkujący muszą pisać tyle linii...? Nam się nie płaci z a ilość napisanych linii kodu.,, :/

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