[c] p

Potrzebujesz pomocy z C, C++, perl, python, itp.
dawidd92
Posty: 10
Rejestracja: 25 listopada 2007, 13:31
Lokalizacja: Kluczbork

[c] pętla i scanf

Post autor: dawidd92 »

Napisałem kod który musi wczytać n razy 2 zmienne (tylko muszą być one wprowadzone za jednym razem - w jednej lini):

Kod: Zaznacz cały

	for(i=1; i<=wpisy; i++)
		{
				printf("Podaj wpis nr %d: ", i);
				scanf("%c %d", &towar, &ile);
				puts("");
				printf("%d: towar:%c ile:%d\n", i, towar, ile);
		}
I jest problem bo program zachowuje się dziwnie: najpierw pobiera zmienne, później wypisuje wartości - są puste i znowu wypisuje wartości - tym razem poprawne (te które wprowadziłem). Czyli zimienne są wczytywane dopiero po drugim wkonaniu pętli. Gdy zmodyfikuje kod:

Kod: Zaznacz cały

	for(i=1; i<=n; i++)
		{
				printf("Podaj wpis nr %d: ", i);
				scanf("%c %d", &towar, &ile);
				scanf("%c %d", &towar, &ile);
				puts("");
				printf("%d: towar:%c ile:%d\n", i, towar, ile);
		}
wszytko jest ok (wartości wprowadzam raz i program działa dalej tak jakby drugiego scanf wogóle tam nie był)
Dlaczego musze 2 razy wpisać scanf żeby działało ok (tak jak bym 2 razy wpisał)?
Nie wiem czy dobrze to wyjaśniłem, ale mam nadzieję że zrozumiecie :-P
0dd
Beginner
Posty: 104
Rejestracja: 16 lipca 2007, 19:43
Lokalizacja: Nowy Sacz / Krakow

Post autor: 0dd »

Kod: Zaznacz cały

for(i=1; i<=wpisy; i++)
        {
                printf("Podaj wpis nr %d: ", i);
                scanf("%c %d", &towar, &ile);
                puts("");
                printf("%d: towar:%c ile:%d\n", i, towar, ile);
                char c = getchar();
        } 
wyjasnienie znajdziesz np tu
grygus
Posty: 7
Rejestracja: 16 grudnia 2007, 22:00

Post autor: grygus »

Kod: Zaznacz cały

[quote] for(i=1; i<=n; i++)
        {
                printf("Podaj wpis nr %d: ", i);
                scanf("%c %d", &towar, &ile);
                scanf("%c %d", &towar, &ile);
                puts("");
                printf("%d: towar:%c ile:%d\n", i, towar, ile);
        } [/quote]
Wywal jeden scanf() i zamien puts() na getchar(); I powinno działać.
ODPOWIEDZ