通过密钥字符串迭代时Vigenere密码“浮点异常(核心转储)”

时间:2014-09-02 20:29:17

标签: c vigenere

我正在研究的这个程序是一个vigenere cypher,其中迭代了一个“明文”字符串,每个字母字符由字母顺序的0索引“密钥”字符串(argv [1])调整。当到达键字符串的末尾时,它应该循环回到第一个字符。我已经在这方面工作了一段时间但是我已经遇到了这个错误的砖墙。程序到达“keyi”的初始化(这意味着是“key”字符串的迭代)然后抛出错误“浮点异常(核心转储)”。现在,我不知道如何阅读被转储的“核心”文件,但我会根据错误猜测我的定义是以某种方式创建一个导致问题的浮动。我根本无法理解浮动是如何创建的。一个int和另一个int的余数应该是一个int,对吗?

我不确定我还能在这里尝试什么,我真的想知道我的错误是什么,继续前进。

for(int i = 0; i < strlen(plaintext); i++)
{
    if(isalpha(plaintext[i]))
    {
        printf("pass 0\n");
        int keyi = (i + strlen(argv[1])) % (strlen(argv[1]));
        printf("pass 1\n");
        char cipherchar = plaintext[i] + argv[1][keyi];

        //Adjust for 'alphabetical rotation'(when neccesary)
        if((isupper(plaintext[i]) && cipherchar > 'Z') || (islower(plaintext[i]) && cipherchar > 'z'))
            cipherchar -= 26;

        printf("%c", cipherchar);

0 个答案:

没有答案