C-凯撒密码[移动代码到功能]



我是C编程语言的新手,因此不要对我的代码太批评。我找到了一些教程来制作Caesar Cipher加密和解密程序,我只是想从CLI运行它。

  1. 我有代码,但是它使用全局变量并且不使用函数,我都需要它们,我需要以某种方式将代码移动到称为"加密"的函数,另一个称为"解密"的功能,此所有问题都进入了问题2

  2. 我创建了加密代码,但是我无法解密,我理解主要想法,但是由于我没有函数(我需要),所以我无法将其解密部分。

请帮助我。这是我的代码:

#include<stdio.h>
int main()
{
    char message[100], symbol;
    int i, key;
    printf("Message to encrypt: ");
    gets(message); //fgets is better
    printf("Enter key: ");
    scanf("%d", &key);
    for(i = 0; message[i] != ''; ++i){
        symbol = message[i];
        if(symbol >= 'a' && symbol <= 'z'){
            symbol = symbol + key;
            if(symbol > 'z'){
                symbol = symbol - 'z' + 'a' - 1;
            }
            message[i] = symbol;
        }
        else if(symbol >= 'A' && symbol <= 'Z'){
            symbol = symbol + key;
            if(symbol > 'Z'){
                symbol = symbol - 'Z' + 'A' - 1;
            }
            message[i] = symbol;
        }
        else if(symbol >= '0' && symbol <= '9'){
            symbol = symbol + key;
            if(symbol > '9'){
                symbol = symbol - '9' + '1' - 1;    
            }
            message[i] = symbol;
        }
    }
    printf("Encrypted message: %s", message);
    return 0;
}

正如我说的那样,我需要发挥2个功能,一个用于加密,另一个用于解密,我可以得到一些帮助吗?

谢谢。

您需要的功能将是

void encryption(char message[100], char encrypted[100], int key)

您可以在其中复制粘贴代码,例如:

void encryption(char message[100], char encrypted[100], int key){
   // declare variables here
   for(i = 0; message[i] != ''; ++i){
    symbol = message[i];
    if(symbol >= 'a' && symbol <= 'z'){
        symbol = symbol + key;
        if(symbol > 'z'){
            symbol = symbol - 'z' + 'a' - 1;
        }
        encrypted[i] = symbol;
    }
    else if(symbol >= 'A' && symbol <= 'Z'){
        symbol = symbol + key;
        if(symbol > 'Z'){
            symbol = symbol - 'Z' + 'A' - 1;
        }
        encrypted[i] = symbol;
    }
    else if(symbol >= '0' && symbol <= '9'){
        symbol = symbol + key;
        if(symbol > '9'){
            symbol = symbol - '9' + '1' - 1;    
        }
        encrypted[i] = symbol;
    }
  }
}

您不必制作一个称为加密的数组[],但是由于您可能需要原始消息[](例如,要检查解码是否正确),我建议不要覆盖它。

<</p>

加密功能

char * encryption(char * message,  int key)
{
  char * encrypted_message= (char *)malloc( (strlen(message)+1)*sizeof(char)); //create a new message that has the length of the original message + 1 space for the null character ('')
 //do the encryption
 return encrypted_message;
  //or make it void and print it the enc. msg. or both
}

您还可以包含string.h lib并使用strlen()函数以获取字符串的长度。

最新更新