首页 > 解决方案 > 在 c 中传递的函数

问题描述

我是一名参加免费课程的初学者程序员,我在使用简单的 Meyer 加密方案来进行基于安全性的加密和解密时遇到了很多麻烦。我无法进行解密,因为我什至无法让加密工作。我们需要添加必要的提示等,以确保用户输入正确的内容。这是我的代码:

int main (void)
{

const int N = 10;
char message [N];
char processed[N];
char selection;

void encrypt_msg(char msg[],char encrypted[]);

printf("Please enter a message: ");
fgets (message, N, stdin);
printf("%s\n",message);
printf("Would you like to encrypt <E>, or decrypt <D> this message?");
scanf(" %c\n",&selection);
if (selection == 'E')
{
    encrypt_msg(message,processed);
    printf("%s\n",processed);
    return 0;
}
if (selection != 'E')
{
    printf("Invalid selection, please enter <E> or <D> ");
}

}
void encrypt_msg(char msg[],char encrypted[])
{
    int i;
    int NL;
    for (i=0;msg[i]!='\0';i++)
    {
    while (msg[i]<'z'&&msg[i]>'A')
    {
        NL=msg[i]+i+1;
        while (NL<'z')
        {
            NL=NL;
        }
        while(NL>'z')
        {
            NL=NL-26;
        }
        encrypted[i]=msg[i]+1;
     }

    }

}

问题是当用户输入“E”时,程序会立即进入“无效输入”的if语句,绕过实际的加密函数。它可能会做一些完全不同的事情,但我不知道,因为我很可怕。'NL' 代表新字母,即根据 MESS 键替换旧字母。

标签: cencryption

解决方案


你试过scanf("%c",&selection);没有 '\n' 吗?


推荐阅读