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