关于指针的问题,如何解决?

要求输入三个字符串,并且从小到大输出
#include 
#include 
int main()
{ void sort(char*str[],int n);
  void print(char*str[],int n);
  char* str[1000];
  int i, m=3;
  printf("请输入三个字符串:");
  for(i=0;iscanf("%s",str[i]);
   } 
   sort(str,m);
   print(str,m);
   return 0;
}
void sort(char*str[],int n)
{ int i,k,j;
   char*temp;
   for(i=0;i-1;i++)
   {  k=i;
   for(j=i+1;jif(strcmp(str[k],str[j])>0) k=j;
   if(k!=i)
   { temp=str[i];
     str[i]=str[k];
     str[k]=temp;
   }
   
}
void print(char*str[],int n)
{ int i;
  for(i=0;iprintf("%s\n",str[i]);} 

}



char *str[1000] 定义了1000个指针,而这些指针并没有被分配内存空间

// char *str[1000];
    int i, m = 3;
    char **str = (char **)malloc(sizeof(char *) * m);
    for (i = 0; i < m; i++)
        str[i] = (char *)malloc(sizeof(char) * 100);


既然是3个字符串,你应该定义a[3][1000]才对,定义成指针数组是要干什么

img