创建一个将结构(或指向该结构的指针)作为参数并按字母顺序对名称进行排序的函数

我创建一个具有3个名称的结构,并且我想创建一个将结构(或指向该结构的指针)作为参数并按字母顺序对名称进行排序的函数。我不知道如何解决sort_name函数,有人可以给我提示吗?预先感谢。

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

struct student {

    char name[50];

};

void getDetail(struct student *ptr) {

  int i;

  for (i = 0; i < 3; i++) {

    printf("Enter %dth name: ",i+1);
    scanf("%s",ptr->name);
    ptr++;
  }
}

void sort_name(struct student *ptr) {

   int i,j=0;
   char temp[50];
   for (i=0;i<3;i++)
   {
       for (j=i+1;j<3;j++)
       {
           if(strcmp(ptr->name,(ptr+1)->name)>0)
           {
               strcpy(temp,ptr->name);
               strcpy(ptr->name,(ptr+1)->name);
               strcpy((ptr+1)->name,temp);
           }

       }


   }

   printf("In order:");
   for(i=0;i<3;i++)
   {
       printf("%s",ptr->name);
   }

}

int main()
{
    struct student s[3];
    getDetail(s);
    sort_name(s);
    return 0;
}
HAWOSHISHUI 回答:创建一个将结构(或指向该结构的指针)作为参数并按字母顺序对名称进行排序的函数

函数看起来像

void sort_name(struct student *ptr) {
   int i,j=0;
   char temp[50];
   for ( i=0; i<3; i++ )
   {
       for (j = 1; j < 3 - i; j++ )
       {
           if(strcmp(ptr[j-1].name,ptr[j].name ) > 0 )
           {
               strcpy( temp,ptr[j-1].name );
               strcpy( ptr[j-1].name,ptr[j].name) ;
               strcpy( ptr[j].name,temp );
           }
       }
   }
}
本文链接:https://www.f2er.com/3081895.html

大家都在问