Pomoc początkującemu w zadaniu

0

Witam, proszę o pomoc w rozwiązaniu zadania, dopiero zaczynam uczyć się języka c, z książką 'Kernighan, Ritchie - Język ANSI C'.

Napisz program który każde słowo wejściowe wypisze w osobnym wierszu.

Nie potrafię uwzględnić przypadku kiedy pojawia się kilka spacji.

 
#include<stdio.h>

main(){
	int c;
	
	while((c=getchar())!= EOF) {
		if (c == ' '||c=='\t')
			printf("\n");
		else
			putchar(c);
	}
}
2

Łopatologicznie rzecz biorąc możesz zapamiętać ostatni znak i nie reagować jak poprzedni również był znakiem białym.

#include<stdio.h>
 
main(){
    int c;
    int lastChar = 0;
    while((c=getchar())!= EOF) {
        if (c == ' '|| c=='\t') {
           if (lastChar != ' ' && lastChar != '\t')
              printf("\n");
        }
        else
            putchar(c);
        lastChar = c;
    }
}
2

Albo przejść do nowej linii dopiero jak spotkasz pierwszy niebiały znak po serii białych znaków (poprzedni jest biały oraz obecny nie jest biały).

#include <stdio.h>
 
int main()
{
    int c;
    int whiteChar = 0;
 
    while ((c=getchar()) != EOF) 
    {
        if (c == ' ' || c == '\t')
        	whiteChar = 1;
        else
        {
            if (whiteChar == 1)
            {
            	printf("\n");
            	whiteChar = 0;
            }

            putchar(c);
        }
    }
    
    return 0;
}
0

Sarrus nie znałem jeszcze tego zapisu

if (lastChar != ' ' && lastChar != '\t')

możesz wytłumaczyc ten zapis ? lastChar = c;

twonek dzięki za rozwiązanie, ciekawa alternatywa

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