您的位置:首页 > 其它

关于字符串加密程序中的一些问题

2015-08-28 21:34 197 查看
如题,见程序中的注释

#include<stdlib.h>   /*要加这一行才能用malloc*/
#include<stdio.h>
#include<string.h>

int find_char(char *new_char,char a)
{
int i=0;
while(new_char[i]!='\0')
{
if(new_char[i]==a)
return 1;
i++;
}
return 0;
}

void encrypt_code(char *key,char *data)
{
int number=0,i=0,j=0,len=0,len_1=0;
char new_char[26];
char secret[26];
char *encrypt=NULL;
len_1=strlen(data);
encrypt=(char *)malloc(len_1*sizeof(char));  //这里要有cha*的强制转换
memset(new_char,'\0', 26 * sizeof(char)) ; /*这里可以记一下,初始化为0的方法*/
while(key[i]!='\0')
{
if(!(find_char(new_char,key[i])))
{
new_char[number]=key[i];
number++;
}
i++;
}
len=strlen(new_char);
for(i=0;i<len;i++)
{
if(new_char[i]<='z' && new_char[i]>='a')
new_char[i]-=32;
}
for(i=0;i<26;i++)
{
if(i<len)
{
secret[i]=new_char[i];
}
else
{
while(j<26)
{
if(!(find_char(new_char,'A'+j)))
{
secret[i]='A'+j;
j++;
break;
}
else
{
j++;
}
}

}
}
for(i=0;i<len_1;i++)
{
if(data[i]==' ')
{
encrypt[i]=data[i];
}
else
{
if(data[i]<='z' && data[i]>='a')
{
encrypt[i]=secret[data[i]-'a'];
encrypt[i]+=32;
}
else
encrypt[i]=secret[data[i]-'A'];
}
}
for(i=0;i<len_1;i++)
{
printf("%c",encrypt[i]);
}

}

int main()
{
char key[26];
char data[1000];
gets(key);  /*输入不带空格的字符串方法*/
gets(data);
encrypt_code(key,data);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: