-1

これは、ROT13 暗号の私のコードです。大文字で動作しますが、入力として hello を入力すると [X__b can help me here ... が返されます。

void encrypt(char *cipher,int key) 
{
    int i = 0;
    while(cipher[i] != '\n') 
    {
        if(isalpha(cipher[i]))
        {
            if((cipher[i] + key) > 'Z' || (cipher[i] + key) > 'z')
            {
                cipher[i] = cipher[i] + key - 26;
            }
            else if((cipher[i] + key) >= 'a' && (cipher[i] + key) <= 'z')
            {
                cipher[i] = cipher[i] + key;
            }
            else if((cipher[i] + key) >= 'A' && (cipher[i] + key) <= 'Z')
            {
                cipher[i] = cipher[i] + key;
            }
        }
        i++;
    }
}
4

1 に答える 1

2

この条件

f((cipher[i] + key) > 'Z' || (cipher[i] + key) > 'z')

すべての小文字に当てはまり、2番目の部分(cipher[i] + key) > 'z'は冗長です

于 2014-02-09T10:23:23.803 に答える