我一直在尝试不同的解决方案,但不确定在哪里寻找解决方案。
我提示用户输入“明文”,无论输入内容是什么,输入中的字符都必须按其提供的数字(即键)按字母顺序旋转。
例如:明文:如果密钥为1,HELLO将吐出密文:IFMMP。
假设键始终是数字,这是我的代码尝试通过键旋转每个字符的样子:1.我是一个真正的菜鸟,请分解一下。
{
string s = get_string("plaintext: ");
printf("ciphertext: %s\n", s + 1);
}
剩余的代码(包括识别和过滤密钥的方法是:
#include <cs50.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
int main(int argc, string argv[])
{
int counter = 0;
if (argc == 2)
{
for (int k = 0; k <strlen(argv[1]); k++)
{
if (isdigit(argv[1][k]))
{
counter++;
}}
if (strlen(argv[1]) == counter)
{
string s = get_string("plaintext: ");
printf("ciphertext: %s\n", s + 1);
}
else
{
printf("Usage: ./caesar key\n");
}
}
else
{
printf("Usage: ./caesar key\n");
}
}
将提供任何帮助。
您可以通过类型转换来实现:
char input = 'f';
char output = (char)((int)input + 1);
您还应该处理小写字母,即字符在字母的结尾附近。