【发布时间】:2015-11-01 12:39:10
【问题描述】:
我需要绘制一个函数,该函数接收一个指针数组(指向字符串)并按字符串长度对指针进行排序。最短的字符串会排在第一位,以此类推。我尝试了以下代码,但它不起作用:
void Q5(){
char str[MAXL][MAXC];
int i;
char** p;
printf("Please enter %d Strings max length = %d\n",MAXL,MAXC);
for (i = 0; i < MAXL; i++){
scanf("%s", str[i]);
}
p = &str;
sort_String(p,MAXL);
printf("\n");
for (i = 0; i < MAXL; i++){
printf("%s", str[i]);
printf("\n");
}
}
void sort_String(char* str,int size){
char* tempP=*str;
char* i,*j;
for (i=str; i < str+size;i++){
for (j=i+1; j < str+size; j++){
if (strlen(i) > strlen(j)){
tempP = j;
j = i;
i = tempP;
}
}
}
【问题讨论】:
-
@Ofir N 你可以使用标准的 C 函数 qsort。:) 至于你的代码,那么它是无效的。您没有指向字符串的指针数组。你有一个二维字符数组。
-
您不会在此代码中收到任何类型的警告。我看到了其中的问题。
标签: c arrays string sorting pointers