C语言名字排序指针输出

在主函数中输入6个人的姓名(用二维数组定义),然后调用函数,把这6个人按名称拼音顺序排序,形参要用到指向一维数组的指针变量。然后在主函数中按序输出出来。


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void swap(char *p1,char *p2){
    char p[20];   //这边要记得定义一个临时指针
    strcpy(p,p1);
    strcpy(p1,p2);
    strcpy(p2,p);
}

int main(){
    char str[6][20];          //自定义的数组数值是我随意定的

    int i=0;
    int j=0;
    int len = 6;
    printf("请输入六行:\n");
    for(i=0;i<6;i++)
    {
            gets(str[i]);
    }
    for (i=0; i<len-1; ++i)
    {
        for (j=0; j<len-1-i; ++j)
        {
            if (strcmp(str[j],str[j+1])>0)  // >表示升序 <表示降序
            {
                swap(str[j],str[j+1]);
            }
        }
    }

    printf("Now,the order is:\n");
    for(i=0;i<6;i++)
    {
            printf("%s\n",str[i]);
    }

    return 0;
}

img