为什么无法完整逆序,应该怎么修改

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char a[100];
    char *p=a;
    gets(p);
    int len =strlen(p);
    char *s=p+len-1;
    while(p<s)
    {
        char t;
         t=*p;
       *p=*s;
        *s=t;
        s--;
        p++;
    }
    printf("%s",p);
}


最后打印把p改为a就可以了,p指向的不是字符串开头


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
    char a[100];
    char* p = a;
    gets_s(a);
    int len = strlen(p);
    char* n = p + len - 1;
    char* s=(char *)malloc(sizeof(char)*len);
    int i = 0;
    while (i<len)
    {
        char t;
        t = *n;
        s[i] = t;
        n--;
        i++;
    }
    s[i] = '\0';
    printf("%s", s);
}