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 '::'?
Dodam jeszcze, ze sytuacja
'
:: 1 2
OK - mamy (1, 2)
'
Jest jak najbardziej prawidłowa.
<ENTER> też jest znakiem i też jest wczytywany jako znak.
Wiem, próbowałem w różnych miejscach wstawiać scanf("\n");
, ale dalej nic z tego.
scanf(" %c", &znak); <-- zwróć uwagę na spację przed %c
@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.
@krwq
Przeskakiwanie enterem nie działa.
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
Można też użyć ncurses, która jest przenośna.