Wpis z mikrobloga

Czy mógłby mi ktoś wyjaśnić co zrobiłem źle w tym programie? ćwiczę używanie funkcji do...while. Gdy wpisuję wybór inny jak '1', '2', to wtedy wyświetla się:
wybór:
wybor:
Wie ktoś może dlaczego to się dzieje?

void dodawanie(void);
void odejmowanie(void);
int main()
{
char wybor;
printf("1.Dodawanie\n2.Odejmowanie\n");
do
{
printf("Wybór:\n");
wybor=getchar();
}while(wybor!='1'&&wybor!='2');
if(wybor=='1')dodawanie();
if(wybor=='2')odejmowanie();

#codereview #programowanie #naukaprogramowania
Pobierz
źródło: comment_AcZUCCnxsiQwK0Zmz5EvNkVJ8VyW0Vgs.jpg
  • 11
@Hertesus: to dość proste, ale będę wredny i nie podam Ci odpowiedzi ;-) za to proponuję wyświetlać wynik funkcji getchar() (zm. wybor) i zastanowić się, co on właściwie oznacza. Miłej zabawy! :)
@Hertesus: Ja myślę, że dlatego, że tak napisałeś pętle?
W do while warunek jest na końcu i jeżeli nie jest on spełniony, to polecenie z do jest wykonywane ponownie.

EDIT: Chyba zamiast && rozsądniej byłoby dać || (?)
@Hertesus: znak nowej linii to też znak, dodatkowo terminale blokują się aż dostaną ten znak.

Użyj getline, termios.h, ignoruj niepoprawne znaki (10, 13 i EOF) albo użyj nowoczesnego języka programowania.