关于指针和数组的问题

最近在学数组和指针,老师让我们输入一串字符串并使其反向储存,我编写了如下代码但是报错了,请问我应该怎么做,我错在哪?

 #include<stdio.h>
void zhuan(char *a,int b)
{
    char m[b];
    int n=0;
    while(b>=0)
        {
        m[n]=*a[b];
        n++;
        b--;
        }
    b=0;
    while(*a[b]!='\0')
        {
            *a[b]=m[b];
            b++;
        }
}

void main()
{
    int i=0,b,k;
    char s[100],*str1[100];
    scanf("%s",&s);

    while(s[i]!='\0')
        {
            str1[i]=&s[i];
            i++;
        }
    zhuan(str1,i);
    for(k=0;k!=0;k++)
       printf("%c",*str1[k]);
}

a[b];

这一句有问题,数组这么写已经是具体的数值了
再加上
就不知道是什么东西了

#include
void zhuan(char *a,int b)
{
char m[b];
int n=0;
while(b>=0)
{
m[n]=a[b];
n++;
b--;
}
b=0;
while(a[b]!='\0')
{
a[b]=m[b];
b++;
}
}

void main()
{
int i=0,b,k;
char s[100],str1[100];
scanf("%s",&s);

while(s[i]!='\0')
    {
        str1[i]=s[i];
        i++;
    }
    i--;
zhuan(str1,i);
for(k=0;str1[k]!='\0';k++)
   printf("%c",str1[k]);

}

你不会使用指针吧。。
代码里面这些用法都是问题的 *a[b]

这么一个数组, char *a,
要取第b个元素,要么就是 a[b], 要么就是 *(a+b)

没有这种用法 *a[b] 的,除非你是指针数组,但事实上不是,就算是也不建议这样下标和指针混用。

#include
void zhuan(char *a,int b)
{
char m[b];
int n=0;
while(b>=0)
{
m[n]=a[b];
n++;
b--;
}
b=0;
while(a[b]!='\0')
{
a[b]=m[b];
b++;
}
}

void main()
{
int i=0,b,k;
char s[100],str1[100];
scanf("%s",&s);