不知道哪里错了,help me

//输入3个字符串,按由小到大的顺序输出
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void Shunxu(char *str[]);
int main()
{
char ch;
ch=(char
)malloc(sizeof(char)*3);
printf("please put three char:");
scanf("%s",*ch);
Shunxu(ch);
printf("resule is:\n");

puts(ch[0]);
puts(ch[1]);
puts(ch[2]);

return 0;

}
void Shunxu(char *str[])
{
char *temp;
if(strcmp(*str[1],*str[2]) >0)
{
temp=str[0];
str[0]=str[1];
str[1]=temp;
}
if(strcmp(*str[1],*str[3]) >0)
{
temp=str[1];
str[1]=str[2];
str[2]=temp;
}
if(strcmp(*str[2],*str[3]) >0)
{
temp=str[0];
str[0]=str[1];
str[1]=temp;
}

}

代码修改如下:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void Shunxu(char *str[]);
int main()
{
    char* ch[3];
    int i;
    
    printf("please put three char:");
    for(i=0;i<3;i++)
    {
        ch[i] = (char*)malloc(100);
        scanf("%s",ch[i]);
    }
    
    Shunxu(ch);
    printf("resule is:\n");

    puts(ch[0]);
    puts(ch[1]);
    puts(ch[2]);

    //释放空间
    for (i=0;i<3;i++)
    {
        free(ch[i]);
        ch[i]=0;
    }
    return 0;

}
void Shunxu(char *str[])
{
    char *temp;
    if(strcmp(str[0],str[1]) >0)
    {
        temp=str[0];
        str[0]=str[1];
        str[1]=temp;
    }
    if(strcmp(str[0],str[2]) >0)
    {
        temp=str[0];
        str[0]=str[2];
        str[2]=temp;
    }
    if(strcmp(str[1],str[2]) >0)
    {
        temp=str[1];
        str[1]=str[2];
        str[2]=temp;
    }

}

scanf("%s",ch);
把*号去掉
void Shunxu(char * str[])
改为
void Shunxu(char str[])
char * str[]就是二维数组啦