#include<stdio.h> #include<string.h> #define MAX_LEN 10 #define N 150 void sortstring(char *ptr[],int n); void swap(char *ptr1,char *ptr2); int main() { int i,n; char name[N][MAX_LEN]; char*pstr[N]; printf("how many countries?:"); scanf("%d",&n); getchar(); printf("input their names\n"); for(i=0;i<n;i++) { pstr[i]=name[i]; gets(pstr[i]); } sortstring(pstr,n); printf("after sorted\n"); for(i=0;i<n;i++) { puts(pstr[i]); } return 0; } void sortstring(char *ptr[],int n) { int i,j;char *temp=NULL; for(i=0;i<n-1;i++) { for(j=i+1;j<n;j++) { if(strcmp(ptr[j],ptr[i])<0) { swap(ptr[j],ptr[i]); } } } } void swap(char *ptr1,char *ptr2) { char temp; temp=*ptr1; *ptr1=*ptr2; *ptr2=temp; }
运行结果如图,程序的目的是想按字典顺序排列国家的名字,我编的程序问题在于只交换了第一个字母,而不是交换指向字符串的指针,不是通过数组的首地址可以调用出数组元素吗,那为什么还是只交换一个字母,问题到底出在哪里?求详细解答!
Object_is_null
qq_一尾沉默的鱼_0