首页 > 解决方案 > 创建一个将结构(或指向结构的指针)作为参数并按字母顺序对名称进行排序的函数

问题描述

我创建了一个具有 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;
}

标签: cfunctionsortingstructc-strings

解决方案


该功能看起来像

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 );
           }
       }
   }
}

推荐阅读