求解,为什么输出的还是原来的字符串


/*编写函数实现将字符串逆序排序*/
#include<stdio.h>
#include<string.h>
void sore(char a[],int i)
{
    char *p=a,c;
    int j=i,t;
    for(t=0;t<=j;t++,j--)
       c=p[t];p[t]=p[j];p[j]=c;
    
    
}

int main()

{
    char a[30];
    int i;
    gets(a);
    i=strlen(a);
    sore(a,i);
    printf("%s",a);
    return 0;
 } 

/*编写函数实现将字符串逆序排序*/
#include <stdio.h>
#include <string.h>
void sore(char a[], int i)
{
    char *p = a, c;
    int j;
    for (j = 0; j <= i/2; j ++)
    {
        c = p[j];
        p[j] = p[i-j-1];
        p[i-j-1] = c;
    }
}

int main()

{
    char a[30];
    int i;
    gets(a);
    i = strlen(a);
    sore(a, i);
    printf("%s", a);
    return 0;
}