Komunikacja z użytkownikiem

0

Witam. Chciałbym, by moja funkcja, ktora wprowadza dane zachowywała się w następujący sposób:
Chcę wprowadzić dwie dane liczbowe, dla wygody jednak wprowadzam char i poźniej konwertuje.
Naciśnięcie entera ze zle wprowadzonym znakiem powoduje wyświetlenie:
::
Wprowadzenie liczby spoza przedziału 0-2:
::
Moja funkcja wygląda tak:
http://ideone.com/iuLPYE
Dla tych wprowadzonych danych powinna zachować się tak:
:: 2 :: 3 :: 1 OK - mamy parę (2, 1)
Natomiast wyświetla
:: 2 :: 3 :: :: 1 OK - mamy (1, 2)
Skąd to podwójne '::'?

0

Dodam jeszcze, ze sytuacja
'
:: 1 2
OK - mamy (1, 2)
'
Jest jak najbardziej prawidłowa.

0

<ENTER> też jest znakiem i też jest wczytywany jako znak.

0

Wiem, próbowałem w różnych miejscach wstawiać scanf("\n");, ale dalej nic z tego.

0

scanf(" %c", &znak); <-- zwróć uwagę na spację przed %c

0

@krwq Tego rownież probowałem. Obawiam się, że to nic nie daje. Albo nie działa przeskakiwanie enterem:
:: \n ::
albo inne rzeczy, zależy, gdzie te spacje wstawiam.

0

@krwq
Przeskakiwanie enterem nie działa.

0

przeskakiwanie enterem nie będzie Ci działać normalnie w standardowy sposób w ogóle bo konsola wysyła dane na standardowe wejście dopiero jak podasz jakiś niebiały znak. Jak chcesz to zrobić w niestandardowy sposób to zamiast scanf("%c", &c) używaj getch() z conio.h, aczkolwiek odejdziesz wtedy już od standardu

0

Można też użyć ncurses, która jest przenośna.

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