scanf wczytywanie ciągu liczb z konsoli, zakończonego znakiem EOF

0

Rozwiązuje sobie różne zadania ze SPOJ-a. Jednak nie bardzo wiem jak wczytać z konsoli ciąg liczb zakończony znakiem EOF. Poszczególne liczby są przedzielone znakiem spacji. Próbowałem już konstrukcji typu:

int x;
    while(scanf("%d",&x)!=EOF)
    {
        printf("%d\n",x);//dla przykładu chce te liczby wyświetlić
    }

Czy ktoś ma jakiś pomysł? Koniecznie muszę używać C. W c++ sprawa byłaby prosta...

1

Nie wystarczyłoby samo scanf?

1

Zapewne można to napisać na tysiąc sposobów, np. tak: (metoda rozwleczona)

  while(!feof(stdin)) {
    scanf("%d ", &x);
    printf("%d ", x);      
  }

Porównywanie z EOF też działa.

Sam scanf jest chyba niepoprawny, bo EOF to (zazwyczaj) -1. Nie spowoduje to przerwania pętli. (Tutaj nigdy nie będzie 0 wczytanych)

0

Dzięki chłopaki!!!! działa
Więc na forum SPOJ w FAQ jest błąd :P

1
int x;
    while(scanf("%d",&x)==1) printf("%d\n",x);

lub:

int x,y;
    while(scanf("%d%d",&x,&y)==2) printf("%d %d\n",x,y);

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