Pobranie wprowadzonego do konsoli ciągu liczb oddzielonych spacjami

0

Jak pobrac w czystym C wprowadzony do konsoli ciag liczb oddzielonych spacjami tak aby wczytywane zostaly az do wcisniecia Enter(Line Feed)
Wiem ze to jest zle bo przesylam mu liczbe ale nie mam pomyslu.

#include <stdio.h>
int main(){
    unsigned int sum = 0;
    while(scanf("%d",&sum) != EOF){
        sum += sum;
    }
    printf("&d",sum);
    return 0;
}
2

Nie no, wczytywanie jako takie masz dobrze, tylko próbujesz dwie rzeczy ogarnąć tym samym: najpierw wczytywana liczba nadpisuje Ci zmienną sum, a potem wykonujesz sum += sum;, czyli mnożysz sum przez dwa. Po czym znowu je nadpisujesz itd. Czyli na końcu znajdzie się tam dwukrotność ostatniej wartości.

Zrób sobie drugą zmienną, do której będziesz wczytywał liczby i dopiero ją dodawaj do sumy.

EDYCJA: jeszcze jedno, flagą dla unsigned int jest u, nie d — ono jest dla „zwykłych” intów.

1

Chyba bym użył fgets a potem sscanf.

0

tak oczywiście. glupi błąd

 #include <stdio.h>
int main(){
    unsigned int sum = 0;
    unsigned int wcz = 0;
    while(scanf("%u",&wcz) != EOF){
        sum += wcz;
    }
    printf("&u",sum);
    return 0;
}

ale ta petla nigdy mi się nie kończy
chcialbym móc wpisac np

4 3 2 1 (Enter)
nastepnie pokazuje sie wynik
10

0

Prosze zrobione koniecznie na rodzinie scanf.

https://ideone.com/rXLxTK

Zasadniczo scanf nie jest dostosowany do wczytywania jednej linijki i należy sobie to uświadomić. ;-)

0

A na czym jesli można wiedzie?
Bardzo zalezy mi na prędkości bo nie znam C a potrzebuje mozliwie szybkiego sposobu pobrania jednej linijki danych.
W javie bym dal nextLine() ale mam zadania algorytmiczne,
a java nie nadaje sie do tego typu prac ;)

0

A do tego zalezy mi na tym zeby te dane nie przechowywac w tablicy, chcialbym dynamicznie pobierać linijke z klawiatury i najlepiej żeby jakimś małym kosztem weryfikować czy to jest liczba.

0

C jest samo w sobie szybkie fgets jest do wczytywania całej linijki. Już to napisałem raz. man fgets.

0

jednak fgets zapisuje to do tablicy.
char *fgets(char *str, int size, FILE *stream);
zapisuje do str.
A ja bym potrzebowal czegos co zjada mi int(wykonuje na nim sprawdzenie) po intcie az do konca linijki (ASCII 10)

0

poddaje się.

możesz jeszcze wcyztać po write i castować (*int) lecac pointerem jeśli masz dobrze zformatowaną date.

GG
Powodzenia.

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