|
[c] pętla i scanf
dawidd92 - 14-12-2007 20:13
Napisałem kod który musi wczytać n razy 2 zmienne (tylko muszą być one wprowadzone za jednym razem - w jednej lini): 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: 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 - 15-12-2007 11:27
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 - 16-12-2007 22:29
Wywal jeden scanf() i zamien puts() na getchar(); I powinno działać.
zanotowane.pldoc.pisz.plpdf.pisz.plminister.pev.pl
|