Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Caesar'加密文本;s密码_C_Algorithm_Encryption - Fatal编程技术网

使用Caesar'加密文本;s密码

使用Caesar'加密文本;s密码,c,algorithm,encryption,C,Algorithm,Encryption,我正在编写这个C程序,它接受一个命令行参数,然后加密用户稍后输入的文本 我们通过用于加密的命令行输入一个数字。例如,如果我们从命令行输入一个数字1,然后用户想要加密,比如说“aaaa”,加密的文本将是“bbbb”,只是每个文本都移动了一个字符。我完成了输出,但没有打印回文本。我犯了什么错 这是我的密码 int main(int argc , string argv[]) { if(argc != 2) { return -1;

我正在编写这个C程序,它接受一个命令行参数,然后加密用户稍后输入的文本

我们通过用于加密的命令行输入一个数字。例如,如果我们从命令行输入一个数字1,然后用户想要加密,比如说“aaaa”,加密的文本将是“bbbb”,只是每个文本都移动了一个字符。我完成了输出,但没有打印回文本。我犯了什么错

这是我的密码

int main(int argc , string argv[])
    {
       if(argc != 2)
         {
            return -1;
         }
    int k = atoi(argv[1]);
    printf("Enter the text to be encrypted : ");
    string text = get_string();
    int length = strlen(text);
    for(int i=0 ; i<length ; i++)
       {
           int p = text[i];
           int c = (p + k) % 26; 
           printf("%c",c);
        }
   }
intmain(intargc,字符串argv[])
{
如果(argc!=2)
{
返回-1;
}
int k=atoi(argv[1]);
printf(“输入要加密的文本:”);
字符串文本=获取字符串();
int length=strlen(文本);
对于(int i=0;i此代码:

int c = (p + k) % 26; 
printf("%c",c);
很可能不会打印任何有价值的内容,因为结果值将在0..25范围内,ASCII中的值是不同的控制字符。您要做的是检查字符是ASCII小写还是ASCII大写,然后进行旋转,并确保结果也在同一范围内:

unsigned int c = text[i];
if (c >= 'A' && c <= 'Z') {
    c = ((c - 'A') + k) % 26 + 'A';
}
else if (c >= 'a' && c <= 'z') {
    c = ((c - 'a') + k) % 26 + 'a';
}
printf("%c", c);
unsigned int c=text[i];
如果(c>='A'&&c='A'&&c此代码在此处:

int c = (p + k) % 26; 
printf("%c",c);
很可能不会打印任何有价值的内容,因为结果值将在0..25范围内,ASCII中的值是不同的控制字符。您要做的是检查字符是ASCII小写还是ASCII大写,然后进行旋转,并确保结果也在同一范围内:

unsigned int c = text[i];
if (c >= 'A' && c <= 'Z') {
    c = ((c - 'A') + k) % 26 + 'A';
}
else if (c >= 'a' && c <= 'z') {
    c = ((c - 'a') + k) % 26 + 'a';
}
printf("%c", c);
unsigned int c=text[i];

如果(c>='A'&&c='A'&&c是
string
char*
的类型定义,或者什么?请将代码添加到question@AnttiHaapala-是的。是反模式培养的凯瑟斯?我想它的拼写是“剪刀”。你只需要把你的文本和他们一起浏览几遍,尽可能彻底。我不相信哈佛大学会教这个:Dis
string
a typedef for
char*
,或者什么?你能把代码添加到
get\u string()中吗
将功能添加到您的question@AnttiHaapala-是的。这是反模式培养的凯瑟斯?我想它的拼写是“剪刀”。你只是用它们把你的文本浏览了好几遍,尽可能彻底。我不相信他们在哈佛教这个:你的代码不起作用,兄弟。对于1和文本aaaa的键,输出是{{{{@StoryTeller是的,修复了。你的代码不起作用,兄弟。对于键1和文本aaaa,输出是{{{{@StoryTeller是的,修复了。