用指针作为函数参数,设计凯撒密码,要求做到加密与解密、请问各位专家究竟哪里出错了?

#include <stdio.h>
}
#define N 100
void lock(char *p);
void unlock(char *p);
int main(void)
{
char a[N];
printf("请输入需加密内容:");
gets(a);
lock(a);
puts(a);
unlock(a);
puts(a);
}
void lock(char *p)
{
for(;*p!='\0';p++)
{
if(*p>='a'&&*p<='w') *p=*p+3;
if(*p>='x'&&*p<='z') *p=*p-23;
}
}
void unlock(char *p)
{
for(;*p!='\0';p++)
{
if(*p>='d'&&*p<='z') *p=*p-3;
if(*p>='a'&&*p<='c') *p=*p+23;
}
}