C - 凯撒密码 [将代码移动到函数]
C - Caesar Cipher [Moving Code to Function]
我是 C 编程语言的新手,所以不要对我的代码太挑剔。我找到了一些制作 Caesar Cipher 加密和解密程序的教程,我只想从 CLI 运行 它。
我有代码,但它使用全局变量而不使用函数,我需要它们,我需要以某种方式将我的代码移动到名为 "encryption" 的函数和另一个函数称为 "decryption",这都转到问题编号 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] != '[=10=]'; ++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] != '[=11=]'; ++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;
}
}
}
您不必制作一个名为 encrypted[] 的数组,但由于您稍后可能需要原始消息[](例如,为了检查您的解码是否正确),我建议不要覆盖它。
加密函数
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 ('[=10=]')
//do the encryption
return encrypted_message;
//or make it void and print it the enc. msg. or both
}
您还可以包含 string.h 库并使用 strlen() 函数获取字符串的长度。
我是 C 编程语言的新手,所以不要对我的代码太挑剔。我找到了一些制作 Caesar Cipher 加密和解密程序的教程,我只想从 CLI 运行 它。
我有代码,但它使用全局变量而不使用函数,我需要它们,我需要以某种方式将我的代码移动到名为 "encryption" 的函数和另一个函数称为 "decryption",这都转到问题编号 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] != '[=10=]'; ++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] != '[=11=]'; ++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;
}
}
}
您不必制作一个名为 encrypted[] 的数组,但由于您稍后可能需要原始消息[](例如,为了检查您的解码是否正确),我建议不要覆盖它。
加密函数
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 ('[=10=]')
//do the encryption
return encrypted_message;
//or make it void and print it the enc. msg. or both
}
您还可以包含 string.h 库并使用 strlen() 函数获取字符串的长度。