3

我是 c 新手,我正在编写一个程序,该程序将使用Caesar cipher加密文本文件。每当我运行它时,它只会将字母转换为 SOH 字符。

加密.c

char *lowerAlpha= "abcdefghijklmnopqrstuvxxyz";
char *upperAlpha= "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

int encrypt(int c, int amount)
{
    char* alpha;
    int retVal = c;
    int i;

    if(isalpha(c))
    {
        if(islower(c))
        {
            alpha = lowerAlpha;
            i = (c - 'a' - amount) % 26;
            retVal = alpha[i];

        }
        else if(isupper(c))
        {
            alpha = upperAlpha;
            i = (c -'A' - amount) % 13;
            retVal = alpha[i];
        }
    }
    return retVal;
}

在我的主要方法是我使用的另一个文件中

encryptFile(inputfile, outputfile, 13);
4

1 回答 1

0

您正在减去'A''a'在加密期间将字符值转换为0 .. 25范围,并且您永远不会添加任何内容以将它们转换回字母。

于 2013-04-30T18:21:12.943 回答