c语言解密问题,请帮我解答这串代码,哪里出错了

#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);
}