Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.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
C 字符整数相加会导致乱码_C_Encryption - Fatal编程技术网

C 字符整数相加会导致乱码

C 字符整数相加会导致乱码,c,encryption,C,Encryption,我在做凯撒的密码练习;我加密的字符正在变成胡言乱语。 我怀疑这是因为超出范围的问题,因为当enMsg[I]=n时,代码被完全加密。我该如何处理这个问题呢?你必须把字母表包装起来,这样如果移位是3,你就可以把z翻译成c,等等。你的代码将它翻译成z之后的第三个字符,这在任何已知的代码集中都不是c。您还需要考虑如何处理大写字母、小写字母、数字和标点符号。您的代码跳过空格(但您应该编写if(enMsg[i]!=''),使用文本表示空格,而不是值32)。它不应该变成乱码吗?;-)实际上,你可能想添加一个复

我在做凯撒的密码练习;我加密的字符正在变成胡言乱语。
我怀疑这是因为超出范围的问题,因为当enMsg[I]=n时,代码被完全加密。我该如何处理这个问题呢?

你必须把字母表包装起来,这样如果移位是3,你就可以把
z
翻译成
c
,等等。你的代码将它翻译成
z
之后的第三个字符,这在任何已知的代码集中都不是
c
。您还需要考虑如何处理大写字母、小写字母、数字和标点符号。您的代码跳过空格(但您应该编写
if(enMsg[i]!='')
,使用文本表示空格,而不是值32)。它不应该变成乱码吗?;-)实际上,你可能想添加一个复选框,只修改字母(在a和z之间),如果结果超过z,则将其重新包装。伙计们,我明白了,谢谢!
string encryp(const string msg, int n)
{
    string enMsg = msg;
    for(int i = 0; msg[i]!='\0'; i++)
    {
        if(enMsg[i] != 32)
            enMsg[i] += n;
    }
    return enMsg;
}     

int main(int argc, char **argv)
{
    if(argc > 2) return 1;
    int n = atoi(argv[1]);
    printf("Print the string to be encrypted: ");
    string msg = GetString();
    string enMsg = encryp(msg, n);
    printf("%s\n", enMsg);
}