我需要按如下方式加密算法
算法:
最初编码的字符串将为空。给定一个字符串,每次将选择字符串的中间字符,并将其应用于编码后的字符串。
即,如果字符串为sanji
,则将选择第一个n。
EncodedStr将为"n"
,剩余消息为"saji"
,将选择“ a”(如果是偶数字母,则将选择最中间的中间字母)
EncodedStr将为“ na”,剩余消息为“ sji”。将选择“ j”。
编码的Str为"naj"
,其余消息为“ si”。将选择“ s”。后跟i.Final编码的str将是"najsi"
,然后进行反向解码。
这是我的编码和解码代码:
char * encode(char *str) {
if (str == NULL)
return NULL;
int len = findLen(str);
int temp = len;
if (len == 1)
return str;
int k = 0;
int mid = 0,i;
int repl_chr = 'A';
char * en = (char*)malloc(sizeof(char)*len);
while (len > 0){
mid = len / 2;
en[k] = str[mid];
k++;
for (i = mid; i < len; i++){
str[i] = str[i + 1];
}
len--;
//memmove(&str[mid], &str[mid + 1], temp - mid);
}
printf("%s",en);
return en;
}
char* decode(char *str) {
if (str == NULL)
return NULL;
int len = findLen(str);
if (len == 1)
return str;
char * en = (char*)malloc(sizeof(char)*len);
return NULL;
}
int findLen(char *str){
int i;
for (i = 0; str[i] != '\0'; i++){}
return i;
}
我的代码中几乎没有错误。有人可以帮助我修复错误吗?