1
我想写一个非常简单的代码。C解密程序 - 检测到堆损坏
基本上,我得到来自用户的“加密”的字符串,而我的代码解密它具有以下规则:
“从字符串的第一个字母减去一个,从第二减去2,从第三扣3等空间保持不变“
我写了这个代码:
char* q4(char* str_in)
{
char* str_out;
int str_out_length,i,temp;
str_out_length=strlen(str_in)+1; //+1 for null terminator
str_out=(char*)malloc(sizeof(char)*str_out_length);
str_out[str_out_length]='\0'; //null terminator at last index
for(i=0;i<str_out_length;i++)
{
if(str_in[i]!=' ')
{
temp=str_in[i];
str_out[i]=(char)(temp-i-1);
}
else
str_out[i]=str_in[i];
}
return str_out;
}
我的代码似乎返回不正确的输出,不仅如此,我也有读取错误”。堆损坏检测”。
例如,当我输入的字符串是Btwlzx Dqqes
时,输出是Arthur <hgZg<=
并出现错误。基本上第一个字是正确的。第二个是垃圾。如果我只输入Btwlzx
,那么输出是Arthur-
并表示错误。
我在做什么错?
是的,我明白了,这是问题所在。感谢它现在的工作。无论如何,我被要求解密的文本看起来好像是胡言乱语。第一个词是亚瑟,但第二个词是没有意义的。我被要求解密“Btwlzx Dqqes公式| PJ2 Tjhvqujs Iqoqjy BPG Eqfxtx Xcwwtt” – 2014-09-13 12:18:16
@OriaGruber我试图重启在空间计数器。然后我得到了“亚瑟柯南道尔,福尔摩斯和沃森医生”。 – AlexD 2014-09-13 12:36:17