1

我正在研究的这个程序是一个 vigenere 密码,其中迭代了一个“纯文本”字符串,其中每个字母字符都由按字母顺序 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);
4

0 回答 0