#include
#include
typedef char SeqString[27];
#define Maxlen 100
SeqString Original="abcdefghijklmnopqrstuvwxyz";
SeqString
Cipher ="ngzqtcobmuhelkpdawxfyivrsj";
int StrMatch (SString S, char c)
{
int i;
for (i = 0; i < StrLength (S); i ++)
{
if (c == S.ch[i])
return i;
}
return NULL;
}
void Encrypt (SString Original, SString Cipher, char *T)
{
int i, m;
printf ("\n");
for (i = 0; i < StrLength (T); i ++)
{
m = StrMatch (Original, T.ch[i]);
if (m != NULL)
T.ch[i] = Cipher.ch[i];
}
printf ("%s", T);
}
void Decipher (SString Original, SString Cipher, char *T)
{
int i, m ;
printf ("\n");
for (i = 0; i < StrLength (T); i ++)
{
m = StrMatch (Cipher , T.ch[i]);
if(m != NULL)
T.ch[i] = Original.ch[i];
}
printf ("%s", T);
}
修改处见注释,供参考:
#include <stdio.h>
#include <string.h>
typedef char SeqString[27];
#define Maxlen 100
SeqString Original="abcdefghijklmnopqrstuvwxyz";
SeqString Cipher ="ngzqtcobmuhelkpdawxfyivrsj";
int StrMatch (SString S, char c)
{
int i;
for (i = 0; i < StrLength (S); i ++)
{
if (c == S.ch[i])
return i;
}
return -1; //NULL; 修改
}
void Encrypt (SString Original, SString Cipher, char *T)
{
int i, m;
printf ("\n");
for (i = 0; i < StrLength (T); i ++)
{
m = StrMatch (Original, T.ch[i]);
if (m != -1) //NULL) 修改
T.ch[i] = Cipher.ch[m]; //Cipher.ch[i];修改
}
printf ("%s", T);
}
void Decipher (SString Original, SString Cipher, char *T)
{
int i, m ;
printf ("\n");
for (i = 0; i < StrLength (T); i ++)
{
m = StrMatch (Cipher , T.ch[i]);
if(m != -1) //NULL) 修改
T.ch[i] = Original.ch[m]; //Original.ch[i];修改
}
printf ("%s", T);
}