题目是 在主函数中输入5个字符串,定义指针数组指向这5个字符串,编写函数void fun(char*[】,int),
对字符串降序排序,在主函数中输出排序后的字符串。
一下是我的代码
fun函数里的temp改为数组应该就可以了,因为如果是字符指针,而没有指向某块内存空间,是无法正确存储字符串的。
修改如下:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void fun(char *p[],int n){
int i,j,k;
// 将遍历temp由字符指针改为字符数组,
// 以便可以存储 字符串
char temp[100];
for(i=0;i<4;i++){
k=i;
for(j=i+1;j<5;j++){
if(strcmp(p[j],p[k])>0){
k=j;
}
}
if(k!=i){
strcpy(temp,p[k]);
strcpy(p[k],p[i]);
strcpy(p[i],temp);
}
}
}
int main(void){
int i;
char * p[5];
printf("请输入5个字符串:\n");
for(i=0;i<5;i++){
p[i]=(char*)malloc(sizeof(char)*100);
scanf("%s",p[i]);
}
//
// for(i=0;i<5;i++){
// printf("%s\n",p[i]);
// }
printf("\n");
fun(p,5);
printf("降序排序后:");
for(i=0;i<5;i++){
printf("%s ",p[i]);
}
return 0;
}
没有给temp分配空间,也没赋初值。
这么改,供参考: