判断字符串是否是回文串,用自定义函数实现,形参为指针。看看哪里错了

#include<stdio.h>
#include<string.h>
int main()

{

void pd(char *a);

printf("输入一个字符串:\n");

char *a;

scanf("%s",a);

pd(a);

return 0;
}

void pd(char *a)
{

int n,c;

n=strlen(a);

int i;

c=n;

for(i=0;i<c;i++,n--)

{

if((a+i)!=(a+n-1))

{

printf("不是回文串\n");
break;

}

}

if(i==c)

printf("是回文串\n");

}

char* a并没有给它分配内存

#include <stdio.h>
#include <string.h>
int main()

{
    void pd(char *a);
    char str[100];
    printf("输入一个字符串:\n");
    scanf("%s", &str);
    char *a = str;
    pd(a);

    return 0;
}

void pd(char *a)
{
    int n;
    n = strlen(a);
    int i;
    for (i = 0; i <= n/2; i++)
    {
        if ((a[i] != a[n-1-i]))
        {
            printf("不是回文串\n");
            return;
        }
    }
    printf("是回文串\n");
}