[C] Wczytywanie liczb do końca linii

realwasz

[C] Wczytywanie liczb do końca linii

Post autor: realwasz »

Witam
Mam pewien problem. Program ma za zadanie wczytywać liczby oddzielone spacją, aż do końca linii (tj. wpisujemy liczby i naciśnięcie ENTER oznacza koniec linii). Próbowałem coś takiego:

Kod: Zaznacz cały

#include <cstdio>

int main()
{
int a, wynik=0;  
while( scanf("%c", &a)!=EOF )
    {
            wynik=wynik+a;
    }

printf("%d", wynik);
return 0;
}
Ale to nie działa. Jakieś porady?
lukequaint
Użytkownik
Użytkownik
Posty: 219
Rejestracja: 5 maja 2010, o 18:27
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 1 raz
Pomógł: 75 razy

[C] Wczytywanie liczb do końca linii

Post autor: lukequaint »

Skoro C, to nie <cstdio>, tylko <stdio.h> - Twój kod nawet się nie kompiluje. Skoro koniec linii, to nie EOF, a '\n'. I jeśli wczytujesz do inta, to "%d", nie "%c" (choć podejrzewam, że można to wykorzystać). Spróbuj wczytywać znak następujący po liczbie, po ostatniej powinien być znak nowej linii. Ułożyłem coś takiego:

Kod: Zaznacz cały

#include <stdio.h>

int main(void)
{
        int a = 0;
        int s = 0;
        char c = '\0';
        do {
                scanf("%d%c", &a, &c);
                s += a;
        } while (c != '\n');
        printf("%d\n", s);
        return 0;
}
...i zdaje się, że potrafi wczytać liczby wg tego, co podałeś. Psuje się, gdy dodasz np. spację po ostatniej liczbie, ale to można łatwo rozwiązać. Innym pomysłem może być skorzystanie z funkcji

Kod: Zaznacz cały

http://crasseux.com/books/ctutorial/getline.html
, a następnie przetworzenie wczytanego łańcucha znaków. Poza tym, możesz też wczytywać po znaku i sprawdzać, czy otrzymałeś cyfrę, znak nowej linii czy inny znak.
ODPOWIEDZ