Подумайте об этой проверке:
while (input_char != 'm' || input_char != 'o') {
Это говорит "l oop, в то время как input_char
не m
или input_char
не o
". Но если подумать, каждый символ либо не m
, либо не o
. (Вы понимаете, почему?) В результате это будет l oop навсегда.
Чтобы это исправить, измените l oop на
while (input_char != 'm' && input_char != 'o') {
, который говорит: "l oop, если вход не m
и , то вход не o
. " Таким образом, если вход был m
или вход o
, l oop останавливается. (Вы понимаете, почему?)
Еще одно небольшое исправление - нет смысла дважды вызывать getc
внутри l oop. Это читает два символа, но вы помните только один из них.
Надеюсь, это поможет!