Strona 1 z 1

[c] pętla i scanf

: 14 grudnia 2007, 20:13
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

: 15 grudnia 2007, 11:27
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

: 16 grudnia 2007, 22:29
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ć.