Если утверждение игнорируется в основной функции

В настоящее время я пишу код в C, а оператор if в главной функции игнорируется. Как вы можете видеть, этот код получает некоторую строку в качестве ввода и применяет шифр Цезаря. Примечание. Также определена функция шифрования, называемая main, я просто не вставляю, потому что я не думаю, что это необходимо, потому что проблема в том, что когда я спрашиваю пользователя, хочет ли он шифровать или расшифровывать текст, после fgets if оператор полностью игнорируется (после написания «зашифровать» программа просто завершает работу). Код следующий:

int main() { char text[SIZE], choice[SIZE]; printf("\nWelcome to Caesar's Cipher.\nDo you wish to encrypt or decrypt text?\n"); fgets(choice, SIZE, stdin); if (strcmp(choice, "encrypt") == 0) { printf("Insert text to encrypt:\n"); fgets(text, SIZE, stdin); ciphering(text); printf("\nThis is your text encrypted with Caesar's Cipher:\n%s\n", text); } return 0; } 

Строка, которую получает fgets имеет конец \n в конце. Вам нужно удалить его вручную или сравнить с "encrypt\n"

Используйте эту версию strcmp() :

 if (strncmp(choice, "encrypt", 7) == 0) 

Проблема в том, что fgets сохраняет символ новой строки с вашей строкой, поэтому, чтобы брать только первые N символов для сравнения и оставлять \n из сравнения, используйте strncmp чтобы strncmp количество символов, которые вы хотите сравнить с