Podwójne pobieranie scanf

Podwójne pobieranie scanf
  • Rejestracja: dni
  • Ostatnio: dni
0

Witam, mam taki problem, który powtarza mi się dość często (na etapie zabawy z c). Otóż w kilku programach nie tylko z pętlą, scanf pobiera dwa razy z klawiatury liczbę. Pierwsza liczba odpowiada printf, który został napisany wcześniej, a druga liczba odpowiada printf, który dopiero się wyświetli. Chodzi np. o taki program, który sumuje podane cyfry, ale przy podaniu 1 przerywa program. Jak tego uniknąć proszę o pomoc.

Kopiuj
   
#include <stdio.h>
#include <stdlib.h>

int main()
{
  int a,s;
  for( ; ; ){
    printf("Wpisz liczbe do zsumowania\n");
    scanf("%d\n", &a);
    if(a==1)
        break;
        else
            s+=a;
      }
  printf("wyswietlam zsumowane liczby\n");
  printf("%d\n",s);
    return 0;
} 
Vardamir
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
0

Dodaj spację przed %d. Możesz też skorzystać tu z pętli do .. while.

  • Rejestracja: dni
  • Ostatnio: dni
0

Niestety nic to nie pomogło, dalej jest jak wcześniej

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
1
Kopiuj
scanf(" %d", &a);

ze spacją z przodu bez żadnych enterów na końcu.

twonek
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2500
0

Pierwsza liczba odpowiada printf, który został napisany wcześniej, a druga liczba odpowiada printf, który dopiero się wyświetli.
Zupełnie tego nie rozumiem. Jak dla mnie to działa ok: http://ideone.com/wvsdaa. Może podaj wejście, oczekiwane wyjście i faktyczne wyjście.

Natomiast masz błąd w swoim programie: int s - używasz zmiennej niezainicjalizowanej.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.