if语句在主函数中被忽略

If statement being ignored in main function

我目前正在用 C 语言编写代码,而我在 main 函数中的 if 语句被忽略了。如您所见,此代码接收一些字符串作为输入并应用凯撒密码。注意:main中调用的函数ciphering也有定义,我只是不粘贴因为我认为没有必要因为问题是当我询问用户是否要加密或解密文本时,fgets if语句被完全忽略(写入 "encrypt" 后程序就退出了)。 代码如下:

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 给出你想要比较的字符数量