[英]Caesar Cipher C program not working
我有一個正在使用的凱撒密碼程序,它涉及將消息中的每個字母替換為另一個字母,該字母在字母表中的后面位置固定。 此外,它忽略數字和空格。 但是,無論我嘗試什么,該程序都會立即終止。 這是我到目前為止所擁有的;
#include <stdio.h>
char encrypt(char in, int key)
{
while(in != '\n')
{
if(in >= 'A' && in <= 'Z')
{
((in-'A') + key) % 26 + 'A';
printf("%s", in);
}
else if(in >= 'a' && in <= 'z')
{
((in-'a') + key) % 26 + 'a';
printf("%s", in);
}
}
return 0;
}
int main()
{
int key;
String phrase;
char ch;
printf("Enter shift amount (1-25):\n");
scanf("%d ", &key);
printf("Enter message to be encrypted:\n");
scanf(
encrypt(in, key);
return 0;
}
有很多問題。
主要問題是,您正在混合使用char和短語的加密。 您應該將問題分解為幾個子問題。
工作解決方案:
#include <stdio.h>
char encryptchar(char in, int key)
{
if (in >= 'A' && in <= 'Z')
{
in = ((in-'A') + key) % 26 + 'A';
}
else if(in >= 'a' && in <= 'z')
{
in = ((in-'a') + key) % 26 + 'a';
}
return in;
}
void encryptphrase(char phrase[], int key)
{
int i = 0;
char c ;
while (c = phrase[i])
{
c = encryptchar(c, key);
phrase[i] = c;
i++;
}
}
int main()
{
int key;
char phrase[100];
printf("Enter shift amount (1-25):\n");
scanf("%d", &key);
printf("Enter message to be encrypted:\n");
scanf("%s", phrase);
encryptphrase(phrase, key);
printf("%s\n", phrase);
return 0;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.