давайте разберем ваш код построчно, начиная с
scanf("%c", &cont);
Эта строка получит значение char из stdin и поместит его в cont, который является char, так что все в порядке
getchar();
Все, что я должен сказать для этого, почему? ничего полезного не делает, удалите.
Войдя в цикл, мы получили следующее утверждение
if (cont == 'y' || cont == 'Y')
эта строка правильная, она проверяет, равен ли символ y
или Y
else if (cont != 'n' || cont != 'N')
эта строка является главной проблемой, ваш оператор проверяет, является ли продолжение значением НЕ, равным n
или N
, то есть, как упоминалось выше, если пользователь введет значение a
, эта строка вернет true, а затем завершите программу. Чтобы правильно проверить, хочет ли пользователь существовать, вы можете использовать тот же оператор if, используемый для y
if (cont == 'n' || cont == 'N')
если вы замените оригинальное выражение if на это, ваша программа должна работать как положено. Просто помните, что в будущем !=
означает, что оно не равно, т.е. если значение равно чему-либо, кроме n
или N
, верните true. Оператор ==
проверяет равенство, как вы видели выше, поэтому строка cont == 'n'
означает возвращение true, если cont такое же значение, как 'n'
printf("Invalid Please Re-enter");
getchar();
scanf("%c", &cont);
также в качестве дополнительной заметки, пожалуйста, объясните, почему вы продолжаете добавлять бесполезные getchar()
, эти строки буквально ничего не делают, и вы должны удалить их.