问题遇到的现象和发生背景
大概问题是 输入几个字符串 通过递归的方式给这几个字符串按字典顺序排序
最让我头疼的是它程序里先是申请了一个二维字符数组 作为参数传给一个专门输入字符串的子函数 返回之后又申请了一个字符串指针数组也就是char*a[]然后把这个字符串指针数组传进递归比较的函数里
```c
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
char** change(char **a,int n){
if(n==1)
return a; //递归返回条件(存疑点1)(不确定是否正确)
else{
char*b;
int i,j;
for(i=0;i<n-2;i++){
if(strcmp(a[i],a[i+1])>0) //找出整组字符串里最大的一个
j=i;
}
b=a[n-1];
strcpy(a[n-1],a[j]); //把最大的字符串放到末尾
strcpy(a[j],b);
change(a,n-1); //再传入字符指针数组变短
}
}
char** input(char **a,int n){
int i;
for(i=0;i<n;i++){ //(存疑点2)gets不知道对不对 也不知道用不用getchar()
scanf("%s",a[i]);
}
return a;
}
int main(){
int n;
scanf("%d",&n);
char**m; //二维数组
m=(char**)malloc(sizeof(char*)*n); //动态申请空间
int i,j,k;
for(i=0;i<n;i++){
m[i]=(char*)malloc(sizeof(char)*100);
}
m=input(m,n);
char**a;
a=(char**)malloc(sizeof(char*)*n);//字符串指针数组
for(i=0;i<n;i++){ //不知道怎样把二维数组传进字符串指针数组
a[i]=&m[i][100];
}
a=change(a,n); //完全不知道该怎么用
for(i=0;i<n;i++){
puts(m[i]);
}
}
运行结果及报错内容
它运行不出东西
我的解答思路和尝试过的方法
传参和返回值 还有那个二维数组和字符串指针数组我完全不知道怎么用