循环体或指针初始化错误,如何解决?

利用指针编制程序。判断输入的字符串是否为对称字符串(回文)。
#include
int main()
{
char a[80],*p,*q;
int i=0,j=0;
while((a[i]=getchar())!='\n')
i++;
for(p=a,q=&a[i];p<=q;p++,q--)//令两个指针分别从字符串两边开始比较
{
j++;
if(*p!=*q)
{
printf("NO");
break;
}

}
printf("YES");

}
算不了,
为啥?

修改见注释,供参考:

#include<stdio.h>
int main()
{
    char a[80],*p,*q;
    int i=0,j=0;
    while((a[i]=getchar())!='\n')  i++;
    i--;//修改
    for(p=a,q=&a[i];p<=q;p++,q--)//令两个指针分别从字符串两边开始比较
    {
          //j++; 修改
        if(*p!=*q)
        {
            printf("NO");
            break;
        }
    }
    if (p - q >= 0)//修改
        printf("YES");
    return 0;
}