Problem ze funkcją scanf

0

Mam w programie coś takiego:

Wczytuje n razy dane za pomocą funkcji scanf w nastepujacy sposob:

scanf("%u", &dlugosc);
....

następnie mam taki fragment kodu:

	printf("Czy chcesz wyswietlic wyniki (t/n) ?: ");
	wybor=getchar();

I nie wiem czemu program się nie zatrzymuje gdy chce pobrać znak getcharem. Zachowuje sie tak, jak gdyby pobral juz jakis znak i wykonuje się dalej... Probowalem poprzedzic getchara jeszce jednym getcharem, ale niestety nic nie pomogło.
O co tu może chodzić?
Będe wdzięczny za każdą pomoc.

0

scsanf("%u\n",...) ??

0

Po pierwsze, z tego co mnie uczyli,. to:

char znak;
scanf("%d", &znak); - sczytanie znaku

Wadą tego jest to, że sczytywany jest tylko znak, a znak entera jest w buforze klawiatury i "czeka na uwolnienie". Jeśli napotka na instrukcję scanf lub getchar, to "ujawnia się". Proponuje zaraz za instrukcja scanf umiescic instrukcje getchar() lub korzystac s komendy getch(), ktora sczytuje pojedynczy znak (nie trzeba potwierdzac enterem).

Jesli chcesz sczytywac lancuch znakow, to polecam:

char lancuch[50];
gets(lancuch);

Pozdrawiam

0

Po scanf dopisz: fflush(stdin);

GEGE:
Używa %u, bo potrzebuje liczby bez znaku, więc twoje %d na nic mu się nie zda.
Jeżeli chodzi o gets(), to jest to funkcja, która zwiększa podatność na przepełnienie bufora. Lepiej jest stosować fgets() podając stdin jako plik do odczytu oraz długość docelowego bufora.

0

Niestety, ani dodanie \n w scanfie ani dopisanie fflush(stdin) po scanefie nie zmieniło sytuacji.

Dodam, że dane wczytuje z lini poleceń, tworząc przekierowanie:

program.exe < dane.txt

Ale czy to coś zmienia?

dane.txt jest w takim formacie że każda liczba jest w nowej linijce.

0

O kurde, ale jestem glupi!! :P Oczywiscie ze zmienia. [green]
Dzieki za pomoc!!

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